Skip to content

Commit 68a744b

Browse files
authored
Merge pull request #3 from arelange/registry-arm64
Registry arm64
2 parents 3723c10 + 57ef772 commit 68a744b

File tree

3 files changed

+58
-12
lines changed

3 files changed

+58
-12
lines changed

.github/workflows/ci.yml

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,14 @@ on:
1313

1414
jobs:
1515
build-rock:
16-
runs-on: ubuntu-22.04
16+
strategy:
17+
matrix:
18+
include:
19+
- arch: 'amd64'
20+
runner: ubuntu-22.04
21+
- arch: 'arm64'
22+
runner: ubuntu-22.04-arm
23+
runs-on: ${{ matrix.runner }}
1724
steps:
1825
- name: Checkout repository
1926
uses: actions/checkout@v4
@@ -23,11 +30,18 @@ jobs:
2330
id: rockcraft
2431

2532
build-snap:
26-
runs-on: ubuntu-latest
33+
strategy:
34+
matrix:
35+
include:
36+
- arch: 'amd64'
37+
runner: ubuntu-22.04
38+
- arch: 'arm64'
39+
runner: ubuntu-22.04-arm
40+
runs-on: ${{ matrix.runner }}
2741
steps:
2842
- name: Checkout repository
2943
uses: actions/checkout@v4
3044

3145
- name: Build Snap Package
3246
uses: snapcore/action-build@v1
33-
id: snapcraft
47+
id: snapcraft

.github/workflows/registry-actions.yml

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,26 @@ on:
2323

2424
jobs:
2525
build-rock:
26-
runs-on: ubuntu-22.04
26+
strategy:
27+
matrix:
28+
include:
29+
- arch: 'amd64'
30+
runner: ubuntu-22.04
31+
- arch: 'arm64'
32+
runner: ubuntu-22.04-arm
33+
runs-on: ${{ matrix.runner }}
2734
steps:
2835
- name: Checkout repository
2936
uses: actions/checkout@v4
30-
37+
3138
- name: Pack with Rockcraft
3239
uses: canonical/craft-actions/rockcraft-pack@main
3340
id: rockcraft
3441

3542
- name: Upload Rock Artifact
3643
uses: actions/upload-artifact@v4
3744
with:
38-
name: cups-rock
45+
name: cups-rock-${{ matrix.arch }}
3946
path: ${{ steps.rockcraft.outputs.rock }}
4047

4148
publish-rock:
@@ -49,7 +56,8 @@ jobs:
4956
- name: Download Rock Artifact
5057
uses: actions/download-artifact@v4
5158
with:
52-
name: cups-rock
59+
pattern: cups-rock-*
60+
merge-multiple: true
5361

5462
- name: Install Dependencies
5563
run: |
@@ -84,9 +92,21 @@ jobs:
8492
run: |
8593
IMAGE="$(yq '.name' rockcraft.yaml)"
8694
VERSION="$(yq '.version' rockcraft.yaml)"
87-
ROCK="$(ls *.rock | tail -n 1)"
8895
ORG_NAME=$(echo "${ORG}" | tr '[:upper:]' '[:lower:]')
89-
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)
90110
# Push to Docker Hub
91111
# docker tag ${ORG_NAME}/${IMAGE}:${VERSION}-edge ${USERNAME}:${VERSION}-edge
92112
# docker push ${USERNAME}/${IMAGE}:${VERSION}-edge
@@ -107,9 +127,21 @@ jobs:
107127
run: |
108128
IMAGE="$(yq '.name' rockcraft.yaml)"
109129
VERSION="$(yq '.version' rockcraft.yaml)"
110-
ROCK="$(ls *.rock | tail -n 1)"
111130
ORG_NAME=$(echo "${ORG}" | tr '[:upper:]' '[:lower:]')
112-
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)
113145
# Push to Docker Hub
114146
# docker tag ${ORG_NAME}/${IMAGE}:${VERSION}-stable ${USERNAME}:${VERSION}-stable
115147
# docker push ${USERNAME}/${IMAGE}:${VERSION}-stable

rockcraft.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1453,7 +1453,7 @@ parts:
14531453

14541454
avahi-daemon:
14551455
plugin: nil
1456-
overlay-packages:
1456+
stage-packages:
14571457
- avahi-daemon
14581458
- avahi-utils
14591459
- libnss-mdns

0 commit comments

Comments
 (0)