Skip to content

Commit 708673b

Browse files
committed
fix(ci): use buildx imagetools for multi-arch merge
docker manifest create rejects OCI indexes with "is a manifest list". Per-platform builds with provenance+sbom attestations push indexes (image + attestations), not plain images. Switch the merge step to docker buildx imagetools create which handles indexes and preserves per-platform attestations in the merged multi-arch index.
1 parent 08745af commit 708673b

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

.github/workflows/release.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -161,20 +161,20 @@ jobs:
161161
password: ${{ secrets.GITHUB_TOKEN }}
162162

163163
- name: Merge images
164+
# docker buildx imagetools (vs the classic docker manifest CLI)
165+
# is required because per-platform builds with provenance/sbom
166+
# attestations push an OCI index (image + attestations) rather
167+
# than a plain image. `docker manifest create` rejects indexes
168+
# with "is a manifest list"; imagetools handles them and
169+
# preserves the per-platform attestations in the merged index.
164170
run: |
165171
for IMG_TAG in ${{ needs.build-image.outputs.RAW_IMG_TAGS }}; do
166172
for REPO in $REPOS; do
167173
TGT=${REPO}:${IMG_TAG}
168-
169-
docker manifest create $TGT \
170-
$TGT-linux-amd64 \
171-
$TGT-linux-arm64
172-
173-
docker manifest annotate $TGT $TGT-linux-amd64 --os linux --arch amd64
174-
docker manifest annotate $TGT $TGT-linux-arm64 --os linux --arch arm64
175-
176-
docker manifest push $TGT
177-
174+
docker buildx imagetools create \
175+
-t "$TGT" \
176+
"$TGT-linux-amd64" \
177+
"$TGT-linux-arm64"
178178
echo "merged image $TGT" | tee -a $GITHUB_STEP_SUMMARY
179179
done
180180
done

0 commit comments

Comments
 (0)