Skip to content

ci: disable default buildx attestations when pushing images - #614

Merged
loveRhythm1990 merged 1 commit into
matrixorigin:mainfrom
loveRhythm1990:lr90/fix-acr-push-attestations
Aug 23, 2026
Merged

ci: disable default buildx attestations when pushing images#614
loveRhythm1990 merged 1 commit into
matrixorigin:mainfrom
loveRhythm1990:lr90/fix-acr-push-attestations

Conversation

@loveRhythm1990

Copy link
Copy Markdown
Contributor

Fixes #613

Problem

Release Image has failed on every run since 2026-08-21, so no operator nightly image has been published since 2026-07-14. The Build step is rejected by Alicloud ACR:

#36 pushing layers 8.9s done
#36 pushing manifest for registry.cn-hangzhou.aliyuncs.com/mocloud/matrixone-operator:nightly-d261876-2026-08-22@sha256:5065870... 1.9s done
#36 ERROR: failed to push registry.cn-hangzhou.aliyuncs.com/mocloud/matrixone-operator:nightly-d261876-2026-08-22: denied: unknown manifest class for application/vnd.oci.empty.v1+json

Layers and the image manifest push successfully; only the final object is refused. That object is the provenance attestation manifest, which BuildKit has attached by default since v0.11. It is referenced from the OCI image index through a descriptor whose config mediaType is application/vnd.oci.empty.v1+json, and ACR does not recognise it. Docker Hub accepts the format, so only the ACR targets fail.

Nothing in the workflow file changed. docker/setup-buildx-action@v1 does not pin a buildx version, so it installs whatever is current and the behaviour drifted underneath us. The failures start at #607, which predates the Kruise chart work and touched neither Dockerfile nor release_image.yml.

Change

docker/build-push-action@v2 is too old to expose a provenance input, so this opts out via the buildx-native environment variable, which works regardless of the action version:

      - name: Build
        uses: docker/build-push-action@v2
        env:
          BUILDX_NO_DEFAULT_ATTESTATIONS: "1"

The pushed artifact becomes a plain multi-arch image index that ACR accepts. Image content, tags, platforms and cache configuration are unchanged.

Verification

This can only be fully verified by the push itself, since the failure is registry-side and the ACR credentials are only available to the workflow. Locally verified so far:

  • the workflow still parses and the env block is attached to the Build step;
  • the change is additive — five lines, no existing key modified.

Please confirm the post-merge Release Image run publishes nightly-<sha>-<date> to all three registries.

Not included

release_image.yml still uses actions/checkout@v3, docker/login-action@v1, docker/setup-buildx-action@v1 and docker/build-push-action@v2, all targeting Node 20 and now force-run on Node 24 with deprecation warnings. Bumping those (and switching to an explicit provenance: false on build-push-action@v6) is worth doing, but keeping it out of this PR means restoring publishing is not entangled with an action-version bump that changes more behaviour at once.

🤖 Generated with Claude Code

Since BuildKit v0.11, `buildx build --push` attaches a provenance
attestation by default. The attestation is referenced from the OCI image
index through a descriptor whose config mediaType is
`application/vnd.oci.empty.v1+json`, which Alicloud ACR does not
recognise. Every push to the ACR targets has therefore been rejected
with:

    denied: unknown manifest class for application/vnd.oci.empty.v1+json

Layers and the image manifest push fine; only the attestation manifest
is refused, which fails the whole build. Docker Hub accepts the format,
so only the ACR targets break.

The workflow file itself did not change - `docker/setup-buildx-action@v1`
installs the current buildx release, so the behaviour drifted underneath
us. `Release Image` has failed on every run since 2026-08-21 and no
nightly image has been published since 2026-07-14.

`docker/build-push-action@v2` is too old to expose a `provenance` input,
so opt out through the buildx-native environment variable instead, which
works regardless of the action version.

Fixes matrixorigin#613

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@mergify

mergify Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

@loveRhythm1990
loveRhythm1990 merged commit d35dad9 into matrixorigin:main Aug 23, 2026
4 checks passed
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.

[CI]: Release Image workflow fails to push to Alicloud ACR due to default buildx provenance attestations

2 participants