Skip to content

Commit

Permalink
build: use containerd to load multi-platform images
Browse files Browse the repository at this point in the history
  • Loading branch information
autumnjolitz committed Dec 17, 2024
1 parent 92d7ba2 commit bb83540
Showing 1 changed file with 34 additions and 0 deletions.
34 changes: 34 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ jobs:
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Set up containerd
uses: crazy-max/ghaction-setup-containerd@v2

-
id: image_env
run: |
Expand All @@ -58,6 +62,7 @@ jobs:
'${{ matrix.repository }}'
docker pull "${SOURCE_IMAGE}" || true
echo "IMAGE_HOME=$(mktemp -d)" >> "$GITHUB_OUTPUT"
echo ALPINE_VERSION="${ALPINE_VERSION}" >> "$GITHUB_OUTPUT"
echo PYTHON_VERSION="${PYTHON_VERSION}" >> "$GITHUB_OUTPUT"
Expand All @@ -78,7 +83,10 @@ jobs:
context: "."
file: Dockerfile.alpine
target: buildroot
cache-to: |
type=gha
cache-from: |
type=gha
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
build-args: |
Expand All @@ -88,6 +96,7 @@ jobs:
SOURCE_IMAGE=${{ steps.image_env.outputs.SOURCE_IMAGE }}
BUILD_ROOT=/d
tags: "${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot"
outputs: type=oci,dest=${{ steps.image_env.outputs.IMAGE_HOME }}/buildroot.tar
-
name: distroless
uses: docker/build-push-action@v6
Expand All @@ -100,16 +109,28 @@ jobs:
file: Dockerfile.alpine
# target: distroless-python
cache-from: |
type=gha
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
cache-to: |
type=gha
build-args: |
ALPINE_VERSION=${{ steps.image_env.outputs.ALPINE_VERSION }}
BASE_IMAGE_DIGEST=${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
PYTHON_VERSION=${{ steps.image_env.outputs.PYTHON_VERSION }}
SOURCE_IMAGE=${{ steps.image_env.outputs.SOURCE_IMAGE }}
BUILD_ROOT=/d
tags: "${{ steps.image_env.outputs.IMAGE_TAG }}"
outputs: type=oci,dest=${{ steps.image_env.outputs.IMAGE_HOME }}/image.tar

-
name: Import image in containerd
run: |
echo 'import 1'
skopeo copy 'oci-archive:${{ steps.image_env.outputs.IMAGE_HOME }}/buildroot.tar' 'docker-daemon:${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot'
echo 'import 2'
skopeo copy 'oci-archive:${{ steps.image_env.outputs.IMAGE_HOME }}/image.tar' 'docker-daemon:${{ steps.image_env.outputs.IMAGE_TAG }}'
-
name: examples/simple-flask
Expand All @@ -121,12 +142,19 @@ jobs:
linux/arm64/v7
linux/arm64/v8
cache-from: |
type=gha
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
build-args: |
SOURCE_IMAGE=${{ steps.image_env.outputs.IMAGE_TAG }}
tags: "${{ steps.image_env.outputs.IMAGE_TAG }}-example1-amd64"
outputs: type=oci,dest=${{ steps.image_env.outputs.IMAGE_HOME }}/example1.tar

-
name: Import image in containerd
run: |
sudo ctr images import --base-name '${{ steps.image_env.outputs.IMAGE_TAG }}-example1-amd64' --digests --all-platforms '${{ steps.image_env.outputs.IMAGE_HOME }}/example1.tar'
-
name: Login to GitHub Container Registry
Expand Down Expand Up @@ -157,7 +185,10 @@ jobs:
context: "."
file: Dockerfile.alpine
target: buildroot
cache-to: |
type=gha
cache-from: |
type=gha
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
build-args: |
Expand All @@ -180,7 +211,10 @@ jobs:
linux/arm64/v7
linux/arm64/v8
file: Dockerfile.alpine
cache-to: |
type=gha
cache-from: |
type=gha
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
Expand Down

0 comments on commit bb83540

Please sign in to comment.