Skip to content

Commit 02de845

Browse files
authored
Build and push multi-arch container
1 parent 614c159 commit 02de845

File tree

1 file changed

+28
-5
lines changed

1 file changed

+28
-5
lines changed

.github/workflows/registry-actions.yml

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,21 @@ jobs:
9292
run: |
9393
IMAGE="$(yq '.name' rockcraft.yaml)"
9494
VERSION="$(yq '.version' rockcraft.yaml)"
95-
ls *.rock
96-
ROCK="$(ls *.rock | tail -n 1)"
9795
ORG_NAME=$(echo "${ORG}" | tr '[:upper:]' '[:lower:]')
98-
sudo rockcraft.skopeo --insecure-policy copy oci-archive:"${ROCK}" docker-daemon:"${ORG_NAME}/${IMAGE}:${VERSION}-edge"
96+
# Upload each rock to the container registry
97+
declare -a digests=()
98+
for rock in *.rock; do
99+
digest=$(rockcraft.skopeo --insecure-policy inspect "oci-archive:${rock}" --format "{{ .Digest }}")
100+
digests+=($digest)
101+
rockcraft.skopeo --insecure-policy copy oci-archive:${rock} docker-daemon:"${ORG_NAME}/${IMAGE}:${digest}"
102+
done
103+
# Create and upload a multi-arch manifest
104+
args=("manifest" "create" "${multi_arch_image_name}")
105+
for digest in "${digests[@]}"; do
106+
args+=(--amend "${target_image}@${digest}")
107+
done
108+
docker "${args[@]}"
109+
manifest=$(docker manifest push ${ORG_NAME}/${IMAGE}:${VERSION}-edge)
99110
# Push to Docker Hub
100111
# docker tag ${ORG_NAME}/${IMAGE}:${VERSION}-edge ${USERNAME}:${VERSION}-edge
101112
# docker push ${USERNAME}/${IMAGE}:${VERSION}-edge
@@ -116,9 +127,21 @@ jobs:
116127
run: |
117128
IMAGE="$(yq '.name' rockcraft.yaml)"
118129
VERSION="$(yq '.version' rockcraft.yaml)"
119-
ROCK="$(ls *.rock | tail -n 1)"
120130
ORG_NAME=$(echo "${ORG}" | tr '[:upper:]' '[:lower:]')
121-
sudo rockcraft.skopeo --insecure-policy copy oci-archive:"${ROCK}" docker-daemon:"${ORG_NAME}/${IMAGE}:${VERSION}-stable"
131+
# Upload each rock to the container registry
132+
declare -a digests=()
133+
for rock in *.rock; do
134+
digest=$(rockcraft.skopeo --insecure-policy inspect "oci-archive:${rock}" --format "{{ .Digest }}")
135+
digests+=($digest)
136+
rockcraft.skopeo --insecure-policy copy oci-archive:${rock} docker-daemon:"${ORG_NAME}/${IMAGE}:${digest}"
137+
done
138+
# Create and upload a multi-arch manifest
139+
args=("manifest" "create" "${multi_arch_image_name}")
140+
for digest in "${digests[@]}"; do
141+
args+=(--amend "${target_image}@${digest}")
142+
done
143+
docker "${args[@]}"
144+
manifest=$(docker manifest push ${ORG_NAME}/${IMAGE}:${VERSION}-stable)
122145
# Push to Docker Hub
123146
# docker tag ${ORG_NAME}/${IMAGE}:${VERSION}-stable ${USERNAME}:${VERSION}-stable
124147
# docker push ${USERNAME}/${IMAGE}:${VERSION}-stable

0 commit comments

Comments
 (0)