Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 17 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,14 @@ on:

jobs:
build-rock:
runs-on: ubuntu-22.04
strategy:
matrix:
include:
- arch: 'amd64'
runner: ubuntu-22.04
- arch: 'arm64'
runner: ubuntu-22.04-arm
runs-on: ${{ matrix.runner }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand All @@ -23,11 +30,18 @@ jobs:
id: rockcraft

build-snap:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- arch: 'amd64'
runner: ubuntu-22.04
- arch: 'arm64'
runner: ubuntu-22.04-arm
runs-on: ${{ matrix.runner }}
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Build Snap Package
uses: snapcore/action-build@v1
id: snapcraft
id: snapcraft
48 changes: 40 additions & 8 deletions .github/workflows/registry-actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,26 @@ on:

jobs:
build-rock:
runs-on: ubuntu-22.04
strategy:
matrix:
include:
- arch: 'amd64'
runner: ubuntu-22.04
- arch: 'arm64'
runner: ubuntu-22.04-arm
runs-on: ${{ matrix.runner }}
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Pack with Rockcraft
uses: canonical/craft-actions/rockcraft-pack@main
id: rockcraft

- name: Upload Rock Artifact
uses: actions/upload-artifact@v4
with:
name: cups-rock
name: cups-rock-${{ matrix.arch }}
path: ${{ steps.rockcraft.outputs.rock }}

publish-rock:
Expand All @@ -49,7 +56,8 @@ jobs:
- name: Download Rock Artifact
uses: actions/download-artifact@v4
with:
name: cups-rock
pattern: cups-rock-*
merge-multiple: true

- name: Install Dependencies
run: |
Expand Down Expand Up @@ -84,9 +92,21 @@ jobs:
run: |
IMAGE="$(yq '.name' rockcraft.yaml)"
VERSION="$(yq '.version' rockcraft.yaml)"
ROCK="$(ls *.rock | tail -n 1)"
ORG_NAME=$(echo "${ORG}" | tr '[:upper:]' '[:lower:]')
sudo rockcraft.skopeo --insecure-policy copy oci-archive:"${ROCK}" docker-daemon:"${ORG_NAME}/${IMAGE}:${VERSION}-edge"
# Upload each rock to the container registry
declare -a digests=()
for rock in *.rock; do
digest=$(rockcraft.skopeo --insecure-policy inspect "oci-archive:${rock}" --format "{{ .Digest }}")
digests+=($digest)
rockcraft.skopeo --insecure-policy copy oci-archive:${rock} docker-daemon:"${ORG_NAME}/${IMAGE}:${digest}"
done
# Create and upload a multi-arch manifest
args=("manifest" "create" "${multi_arch_image_name}")
for digest in "${digests[@]}"; do
args+=(--amend "${target_image}@${digest}")
done
docker "${args[@]}"
manifest=$(docker manifest push ${ORG_NAME}/${IMAGE}:${VERSION}-edge)
# Push to Docker Hub
# docker tag ${ORG_NAME}/${IMAGE}:${VERSION}-edge ${USERNAME}:${VERSION}-edge
# docker push ${USERNAME}/${IMAGE}:${VERSION}-edge
Expand All @@ -107,9 +127,21 @@ jobs:
run: |
IMAGE="$(yq '.name' rockcraft.yaml)"
VERSION="$(yq '.version' rockcraft.yaml)"
ROCK="$(ls *.rock | tail -n 1)"
ORG_NAME=$(echo "${ORG}" | tr '[:upper:]' '[:lower:]')
sudo rockcraft.skopeo --insecure-policy copy oci-archive:"${ROCK}" docker-daemon:"${ORG_NAME}/${IMAGE}:${VERSION}-stable"
# Upload each rock to the container registry
declare -a digests=()
for rock in *.rock; do
digest=$(rockcraft.skopeo --insecure-policy inspect "oci-archive:${rock}" --format "{{ .Digest }}")
digests+=($digest)
rockcraft.skopeo --insecure-policy copy oci-archive:${rock} docker-daemon:"${ORG_NAME}/${IMAGE}:${digest}"
done
# Create and upload a multi-arch manifest
args=("manifest" "create" "${multi_arch_image_name}")
for digest in "${digests[@]}"; do
args+=(--amend "${target_image}@${digest}")
done
docker "${args[@]}"
manifest=$(docker manifest push ${ORG_NAME}/${IMAGE}:${VERSION}-stable)
# Push to Docker Hub
# docker tag ${ORG_NAME}/${IMAGE}:${VERSION}-stable ${USERNAME}:${VERSION}-stable
# docker push ${USERNAME}/${IMAGE}:${VERSION}-stable
Expand Down
Loading