Skip to content

Commit f79d628

Browse files
committed
chore: do not push -arch tags and use digests instead
1 parent 1afbd65 commit f79d628

3 files changed

Lines changed: 34 additions & 7 deletions

File tree

.github/workflows/merge.yaml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,26 @@ jobs:
4040
env:
4141
ARCH: ${{ matrix.arch }}
4242
TAG: ${{ github.sha }}
43-
IMAGE_TAG: ${{ needs.prepare.outputs.branch }}
43+
- name: Upload digest
44+
uses: actions/upload-artifact@v7
45+
with:
46+
name: digests-${{ matrix.arch }}
47+
path: digests/*
48+
if-no-files-found: error
49+
retention-days: 1
4450

4551
manifest:
4652
needs: [prepare, build]
4753
runs-on: ubuntu-24.04
4854
steps:
4955
- name: Checkout
5056
uses: actions/checkout@v6
57+
- name: Download digests
58+
uses: actions/download-artifact@v8
59+
with:
60+
path: digests
61+
pattern: digests-*
62+
merge-multiple: true
5163
- name: Set up Docker Buildx
5264
uses: docker/setup-buildx-action@v4
5365
- name: Docker login

.github/workflows/release.yml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,26 @@ jobs:
5353
env:
5454
ARCH: ${{ matrix.arch }}
5555
TAG: ${{ needs.prepare.outputs.tag }}
56-
IMAGE_TAG: ${{ needs.prepare.outputs.tag }}
56+
- name: Upload digest
57+
uses: actions/upload-artifact@v7
58+
with:
59+
name: digests-${{ matrix.arch }}
60+
path: digests/*
61+
if-no-files-found: error
62+
retention-days: 1
5763

5864
manifest:
5965
needs: [prepare, build]
6066
runs-on: ubuntu-24.04
6167
steps:
6268
- name: Checkout
6369
uses: actions/checkout@v6
70+
- name: Download digests
71+
uses: actions/download-artifact@v8
72+
with:
73+
path: digests
74+
pattern: digests-*
75+
merge-multiple: true
6476
- name: Set up Docker Buildx
6577
uses: docker/setup-buildx-action@v4
6678
- name: Docker login
@@ -74,4 +86,4 @@ jobs:
7486
IMAGE_TAG: ${{ needs.prepare.outputs.tag }}
7587
- name: Create latest manifest
7688
if: needs.prepare.outputs.is_highest == 'true'
77-
run: make docker-manifest IMAGE_TAG=latest SOURCE_TAG=${{ needs.prepare.outputs.tag }}
89+
run: make docker-manifest IMAGE_TAG=latest

Makefile

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ FULL_IMAGE ?= $(REGISTRY)/$(IMAGE)
1212

1313
TAG ?= $(shell git rev-parse HEAD)
1414
IMAGE_TAG ?= $(shell git rev-parse HEAD)
15-
SOURCE_TAG ?= $(IMAGE_TAG)
1615
COMMIT_SHA ?= $(shell git rev-parse HEAD)
1716

1817
DOCKER_CLI_EXPERIMENTAL ?= enabled
@@ -44,12 +43,16 @@ docker-build:
4443
.PHONY: docker-push-arch
4544
docker-push-arch:
4645
@echo "Building and pushing scaleway-cloud-controller-manager for $(ARCH)"
47-
docker buildx build . --platform=linux/$(ARCH) --build-arg TAG=$(TAG) --build-arg COMMIT_SHA=$(COMMIT_SHA) --build-arg BUILD_DATE=$(BUILD_DATE) --push -t $(FULL_IMAGE):$(IMAGE_TAG)-$(ARCH)
46+
mkdir -p digests
47+
docker buildx build . --platform=linux/$(ARCH) --build-arg TAG=$(TAG) --build-arg COMMIT_SHA=$(COMMIT_SHA) --build-arg BUILD_DATE=$(BUILD_DATE) \
48+
--output type=image,name=$(FULL_IMAGE),push=true,push-by-digest=true,name-canonical=true \
49+
--metadata-file digests/$(ARCH).json
50+
jq -r '."containerimage.digest"' digests/$(ARCH).json > digests/$(ARCH)
4851

4952
.PHONY: docker-manifest
5053
docker-manifest:
51-
@echo "Creating manifest $(FULL_IMAGE):$(IMAGE_TAG) from $(foreach arch,$(ARCHS),$(FULL_IMAGE):$(SOURCE_TAG)-$(arch))"
52-
docker buildx imagetools create -t $(FULL_IMAGE):$(IMAGE_TAG) $(foreach arch,$(ARCHS),$(FULL_IMAGE):$(SOURCE_TAG)-$(arch))
54+
@echo "Creating manifest $(FULL_IMAGE):$(IMAGE_TAG) from $(foreach arch,$(ARCHS),digests/$(arch))"
55+
docker buildx imagetools create -t $(FULL_IMAGE):$(IMAGE_TAG) $(foreach arch,$(ARCHS),$(FULL_IMAGE)@$(shell cat digests/$(arch)))
5356

5457
.PHONY: docker-push-all
5558
docker-push-all:

0 commit comments

Comments
 (0)