Skip to content

Conversation

@bgentry
Copy link
Contributor

@bgentry bgentry commented Jan 2, 2026

Buildx can embed attestation manifests directly in the OCI index (vnd.docker.reference.type=attestation-manifest):

~  docker buildx imagetools inspect --raw riverqueue.com/riverproui:latest | jq .
{
  "schemaVersion": 2,
  "mediaType": "application/vnd.oci.image.index.v1+json",
  "manifests": [
    {
      "mediaType": "application/vnd.oci.image.manifest.v1+json",
      "digest": "sha256:c0611027c37b396f95ad2d44428eaed21834e91ea8ee0bf7b887ff7b38cf47ab",
      "size": 673,
      "platform": {
        "architecture": "arm64",
        "os": "linux"
      }
    },
    {
      "mediaType": "application/vnd.oci.image.manifest.v1+json",
      "digest": "sha256:8faa4eaef58a4f9b931d12af60bf265d96f6f2dda8e3c6a428848cdcefcf9f20",
      "size": 567,
      "annotations": {
        "vnd.docker.reference.digest": "sha256:c0611027c37b396f95ad2d44428eaed21834e91ea8ee0bf7b887ff7b38cf47ab",
        "vnd.docker.reference.type": "attestation-manifest"
      },
      "platform": {
        "architecture": "unknown",
        "os": "unknown"
      }
    },
    {
      "mediaType": "application/vnd.oci.image.manifest.v1+json",
      "digest": "sha256:ccdc5e5e3e11e2c48269f96186e6f4b762c1cddc6fe19d3f0b08c548bae50af0",
      "size": 673,
      "platform": {
        "architecture": "amd64",
        "os": "linux"
      }
    },
    {
      "mediaType": "application/vnd.oci.image.manifest.v1+json",
      "digest": "sha256:bda0aad141eadb946e0754aa5459db1a4e49730a6b752562eda94a93f32035b8",
      "size": 567,
      "annotations": {
        "vnd.docker.reference.digest": "sha256:ccdc5e5e3e11e2c48269f96186e6f4b762c1cddc6fe19d3f0b08c548bae50af0",
        "vnd.docker.reference.type": "attestation-manifest"
      },
      "platform": {
        "architecture": "unknown",
        "os": "unknown"
      }
    }
  ],
  "annotations": {
    "org.opencontainers.image.description": "River UI Pro is a web-based user interface for River, with pro features.",
    "org.opencontainers.image.licenses": "commercial",
    "org.opencontainers.image.source": "https://github.com/riverqueue/riverui"
  }
}

However our publication workflow was not doing a pull-through fetch of these artifacts so they aren't available on the registry. This PR fixes that by adding a small helper script to extract these digests from the index and force-fetch each digest via the live registry and warm its blobs.

I'll have to test this via a prerelease for the next version.

Buildx can embed attestation manifests directly in the OCI index
(vnd.docker.reference.type=attestation-manifest).

In our ECR -> Workers -> R2 pull-through flow, these digests can be
referenced by the index but missing from R2 if they are not requested
while ECR still retains them, leading to pull failures.

- Add a small helper script to extract these digests from the index
- Force-fetch each digest via the live registry and warm its blobs
@bgentry bgentry requested a review from brandur January 2, 2026 20:26
@bgentry bgentry merged commit 4e58b55 into master Jan 2, 2026
23 checks passed
@bgentry bgentry deleted the bg-fix-manifest-publish-pull-through branch January 2, 2026 20:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants