Skip to content

Commit 4a21d4f

Browse files
authored
Merge pull request #26 from arelange/registry-arm64
Registry arm64
2 parents 907d541 + 9ef8f1a commit 4a21d4f

File tree

3 files changed

+86
-20
lines changed

3 files changed

+86
-20
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: 68 additions & 16 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,20 +92,42 @@ 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+
GITHUB_IMAGE="ghcr.io/${ORG_NAME}/${IMAGE}"
97+
#DOCKER_MANIFEST=("manifest" "create" "${ORG_NAME}/${IMAGE}:${VERSION}-edge")
98+
GITHUB_MANIFEST=("manifest" "create" "${GITHUB_IMAGE}:${VERSION}-edge")
99+
# Upload each rock to the container registry
100+
for rock in *.rock; do
101+
echo "Create container from ${rock}"
102+
ARCH=$(rockcraft.skopeo --insecure-policy inspect "oci-archive:${rock}" --format "{{ .Architecture }}")
103+
echo "Architecture: ${ARCH}"
104+
rockcraft.skopeo --insecure-policy copy oci-archive:${rock} "docker-daemon:${ORG_NAME}/${IMAGE}:${VERSION}-${ARCH}-edge"
105+
# Push to Docker Hub
106+
# docker tag ${ORG_NAME}/${IMAGE}:${VERSION}-${ARCH}-edge ${USERNAME}:${VERSION}-${ARCH}-edge
107+
# docker push ${USERNAME}/${IMAGE}:${VERSION}-${ARCH}-edge
108+
# DOCKER_MANIFEST+=("${ORG_NAME}/${IMAGE}:${VERSION}-${ARCH}-edge")
109+
# Push to GitHub Packages
110+
docker tag ${ORG_NAME}/${IMAGE}:${VERSION}-${ARCH}-edge ${GITHUB_IMAGE}:${VERSION}-${ARCH}-edge
111+
docker push ${GITHUB_IMAGE}:${VERSION}-${ARCH}-edge
112+
GITHUB_MANIFEST+=("${GITHUB_IMAGE}:${VERSION}-${ARCH}-edge")
113+
done
114+
115+
# Create and upload a multi-arch manifest for Docker Hub
116+
# echo "create multi-arch container with args: ${DOCKER_MANIFEST[@]}"
117+
# docker "${DOCKER_MANIFEST[@]}"
90118
# Push to Docker Hub
91119
# docker tag ${ORG_NAME}/${IMAGE}:${VERSION}-edge ${USERNAME}:${VERSION}-edge
92120
# docker push ${USERNAME}/${IMAGE}:${VERSION}-edge
93121
# docker tag ${USERNAME}/${IMAGE}:${VERSION}-edge ${USERNAME}/${IMAGE}:latest
94122
# docker push ${USERNAME}/${IMAGE}:latest
123+
124+
# Create and upload a multi-arch manifest for Github Packages
125+
echo "create multi-arch container with args: ${GITHUB_MANIFEST[@]}"
126+
docker "${GITHUB_MANIFEST[@]}"
95127
# Push to GitHub Packages
96-
GITHUB_IMAGE="ghcr.io/${ORG_NAME}/${IMAGE}"
97-
docker tag ${ORG_NAME}/${IMAGE}:${VERSION}-edge ${GITHUB_IMAGE}:${VERSION}-edge
98-
docker push ${GITHUB_IMAGE}:${VERSION}-edge
99-
docker tag ${GITHUB_IMAGE}:${VERSION}-edge ${GITHUB_IMAGE}:latest
100-
docker push ${GITHUB_IMAGE}:latest
128+
docker manifest push ${GITHUB_IMAGE}:${VERSION}-edge
129+
docker manifest create ${GITHUB_IMAGE}:latest ${GITHUB_IMAGE}:${VERSION}-edge
130+
docker manifest push ${GITHUB_IMAGE}:latest
101131
102132
- name: Build and Push Docker Image (Stable Channel)
103133
if: github.event.inputs.workflow_choice == 'stable' || github.event.inputs.workflow_choice == 'both'
@@ -107,13 +137,35 @@ jobs:
107137
run: |
108138
IMAGE="$(yq '.name' rockcraft.yaml)"
109139
VERSION="$(yq '.version' rockcraft.yaml)"
110-
ROCK="$(ls *.rock | tail -n 1)"
111140
ORG_NAME=$(echo "${ORG}" | tr '[:upper:]' '[:lower:]')
112-
sudo rockcraft.skopeo --insecure-policy copy oci-archive:"${ROCK}" docker-daemon:"${ORG_NAME}/${IMAGE}:${VERSION}-stable"
141+
GITHUB_IMAGE="ghcr.io/${ORG_NAME}/${IMAGE}"
142+
#DOCKER_MANIFEST=("manifest" "create" "${ORG_NAME}/${IMAGE}:${VERSION}-stable")
143+
GITHUB_MANIFEST=("manifest" "create" "${GITHUB_IMAGE}:${VERSION}-stable")
144+
# Upload each rock to the container registry
145+
for rock in *.rock; do
146+
echo "Create container from ${rock}"
147+
ARCH=$(rockcraft.skopeo --insecure-policy inspect "oci-archive:${rock}" --format "{{ .Architecture }}")
148+
echo "Architecture: ${ARCH}"
149+
rockcraft.skopeo --insecure-policy copy oci-archive:${rock} "docker-daemon:${ORG_NAME}/${IMAGE}:${VERSION}-${ARCH}-stable"
150+
# Push to Docker Hub
151+
# docker tag ${ORG_NAME}/${IMAGE}:${VERSION}-${ARCH}-stable ${USERNAME}:${VERSION}-${ARCH}-stable
152+
# docker push ${USERNAME}/${IMAGE}:${VERSION}-${ARCH}-stable
153+
# DOCKER_MANIFEST+=("${ORG_NAME}/${IMAGE}:${VERSION}-${ARCH}-stable")
154+
# Push to GitHub Packages
155+
docker tag ${ORG_NAME}/${IMAGE}:${VERSION}-${ARCH}-stable ${GITHUB_IMAGE}:${VERSION}-${ARCH}-stable
156+
docker push ${GITHUB_IMAGE}:${VERSION}-${ARCH}-stable
157+
GITHUB_MANIFEST+=("${GITHUB_IMAGE}:${VERSION}-${ARCH}-stable")
158+
done
159+
160+
# Create and upload a multi-arch manifest for Docker Hub
161+
# echo "create multi-arch container with args: ${DOCKER_MANIFEST[@]}"
162+
# docker "${DOCKER_MANIFEST[@]}"
113163
# Push to Docker Hub
114164
# docker tag ${ORG_NAME}/${IMAGE}:${VERSION}-stable ${USERNAME}:${VERSION}-stable
115165
# docker push ${USERNAME}/${IMAGE}:${VERSION}-stable
166+
167+
# Create and upload a multi-arch manifest for Github Packages
168+
echo "create multi-arch container with args: ${GITHUB_MANIFEST[@]}"
169+
docker "${GITHUB_MANIFEST[@]}"
116170
# Push to GitHub Packages
117-
GITHUB_IMAGE="ghcr.io/${ORG_NAME}/${IMAGE}"
118-
docker tag ${ORG_NAME}/${IMAGE}:${VERSION}-stable ${GITHUB_IMAGE}:${VERSION}-stable
119-
docker push ${GITHUB_IMAGE}:${VERSION}-stable
171+
docker manifest push ${GITHUB_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)