Skip to content

Commit 0ff005b

Browse files
committed
Use imagetools for generating container manifest
Signed-off-by: Jakub Stejskal <xstejs24@gmail.com>
1 parent 8b0a89f commit 0ff005b

File tree

4 files changed

+20
-37
lines changed

4 files changed

+20
-37
lines changed

.azure/scripts/install_syft.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/usr/bin/env bash
22
set -e
33

4-
readonly VERSION="0.90.0"
4+
readonly VERSION="1.20.0"
55

66
ARCH=$1
77
if [ -z "$ARCH" ]; then

.azure/templates/jobs/push_container.yaml

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,32 +30,25 @@ jobs:
3030
DOCKER_USER: $(QUAY_USER)
3131
DOCKER_PASS: $(QUAY_PASS)
3232
DOCKER_REGISTRY: "quay.io"
33-
- bash: "make docker_delete_manifest"
34-
displayName: "Delete existing container manifest"
35-
env:
36-
BUILD_REASON: $(Build.Reason)
37-
BRANCH: $(Build.SourceBranch)
38-
DOCKER_REGISTRY: "quay.io"
39-
DOCKER_ORG: "strimzi"
40-
DOCKER_TAG: '${{ parameters.dockerTag }}'
4133
- ${{ each arch in parameters.architectures }}:
42-
- bash: make docker_load docker_tag docker_push docker_amend_manifest docker_delete_archive
43-
displayName: "Push the ${{ arch }} containers and create manifest"
34+
- bash: make docker_load docker_tag docker_push docker_delete_archive
35+
displayName: "Push the ${{ arch }} containers"
4436
env:
4537
BUILD_REASON: $(Build.Reason)
4638
BRANCH: $(Build.SourceBranch)
4739
DOCKER_REGISTRY: "quay.io"
4840
DOCKER_ORG: "strimzi"
4941
DOCKER_TAG: '${{ parameters.dockerTag }}'
5042
DOCKER_ARCHITECTURE: ${{ arch }}
51-
- bash: "make docker_push_manifest"
52-
displayName: "Push container manifest"
43+
- bash: "make docker_amend_manifest"
44+
displayName: "Create multi-platform manifests"
5345
env:
5446
BUILD_REASON: $(Build.Reason)
5547
BRANCH: $(Build.SourceBranch)
5648
DOCKER_REGISTRY: "quay.io"
5749
DOCKER_ORG: "strimzi"
5850
DOCKER_TAG: '${{ parameters.dockerTag }}'
51+
MANIFEST_ARCHITECTURES: '${{ join('','', parameters.architectures) }}'
5952
- bash: "make docker_sign_manifest"
6053
displayName: "Sign container manifest"
6154
env:

.github/actions/build/push-containers/action.yml

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,32 +67,26 @@ runs:
6767
shell: bash
6868
run: docker login -u ${{ inputs.quayUser }} -p ${{ inputs.quayPass }} ${{ env.DOCKER_REGISTRY }}
6969

70-
- name: Delete existing container manifests
71-
shell: bash
72-
run: make docker_delete_manifest
73-
env:
74-
BUILD_REASON: "IndividualCI"
75-
BRANCH: ${{ github.ref }}
76-
77-
- name: Push containers and create manifests
70+
- name: Push containers
7871
shell: bash
7972
run: |
8073
IFS=',' read -ra ARCH_ARRAY <<< "${{ inputs.architectures }}"
8174
for arch in "${ARCH_ARRAY[@]}"; do
8275
echo "Processing architecture: ${arch}"
8376
export DOCKER_ARCHITECTURE="${arch}"
84-
make docker_load docker_tag docker_push docker_amend_manifest docker_delete_archive
77+
make docker_load docker_tag docker_push docker_delete_archive
8578
done
8679
env:
8780
BUILD_REASON: "IndividualCI"
8881
BRANCH: ${{ github.ref }}
8982

90-
- name: Push container manifests
83+
- name: Create multi-platform manifests
9184
shell: bash
92-
run: make docker_push_manifest
85+
run: make docker_amend_manifest
9386
env:
9487
BUILD_REASON: "IndividualCI"
9588
BRANCH: ${{ github.ref }}
89+
MANIFEST_ARCHITECTURES: ${{ inputs.architectures }}
9690

9791
- name: Sign container manifests
9892
shell: bash

Makefile.docker

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ ifdef DOCKER_ARCHITECTURE
1919
DOCKER_PLATFORM_TAG_SUFFIX = -$(DOCKER_ARCHITECTURE)
2020
endif
2121

22+
MANIFEST_ARCHITECTURES ?= $(DOCKER_ARCHITECTURE)
23+
2224
.PHONY: docker_build
2325
docker_build:
2426
# Build Docker image ...
@@ -32,7 +34,7 @@ docker_build:
3234
.PHONY: docker_save
3335
docker_save:
3436
# Saves the container as TGZ file
35-
$(DOCKER_CMD) save strimzi/$(PROJECT_NAME):$(BUILD_TAG)$(DOCKER_PLATFORM_TAG_SUFFIX) | gzip > access-operator-container$(DOCKER_PLATFORM_TAG_SUFFIX).tar.gz
37+
$(DOCKER_CMD) save $(DOCKER_PLATFORM) strimzi/$(PROJECT_NAME):$(BUILD_TAG)$(DOCKER_PLATFORM_TAG_SUFFIX) | gzip > access-operator-container$(DOCKER_PLATFORM_TAG_SUFFIX).tar.gz
3638

3739
.PHONY: docker_load
3840
docker_load:
@@ -56,18 +58,12 @@ docker_delete_archive:
5658

5759
.PHONY: docker_amend_manifest
5860
docker_amend_manifest:
59-
# Create / Amend the manifest
60-
$(DOCKER_CMD) manifest create $(DOCKER_REGISTRY)/$(DOCKER_ORG)/$(PROJECT_NAME):$(DOCKER_TAG) --amend $(DOCKER_REGISTRY)/$(DOCKER_ORG)/$(PROJECT_NAME):$(DOCKER_TAG)$(DOCKER_PLATFORM_TAG_SUFFIX)
61-
62-
.PHONY: docker_push_manifest
63-
docker_push_manifest:
64-
# Push the manifest to the registry
65-
$(DOCKER_CMD) manifest push $(DOCKER_REGISTRY)/$(DOCKER_ORG)/$(PROJECT_NAME):$(DOCKER_TAG)
66-
67-
.PHONY: docker_delete_manifest
68-
docker_delete_manifest:
69-
# Delete the manifest to the registry, ignore the error if manifest doesn't exist
70-
$(DOCKER_CMD) manifest rm $(DOCKER_REGISTRY)/$(DOCKER_ORG)/$(PROJECT_NAME):$(DOCKER_TAG) || true
61+
# Create the multi-platform manifest from architecture-specific images
62+
sources="" ; \
63+
for arch in $$(echo "$(MANIFEST_ARCHITECTURES)" | tr ',' ' '); do \
64+
sources="$$sources $(DOCKER_REGISTRY)/$(DOCKER_ORG)/$(PROJECT_NAME):$(DOCKER_TAG)-$$arch" ; \
65+
done ; \
66+
$(DOCKER_CMD) buildx imagetools create -t $(DOCKER_REGISTRY)/$(DOCKER_ORG)/$(PROJECT_NAME):$(DOCKER_TAG) $$sources
7167

7268
.PHONY: docker_sign_manifest
7369
docker_sign_manifest:

0 commit comments

Comments
 (0)