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 37e105c
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ jobs:
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

-
id: image_env
run: |
Expand All @@ -58,6 +59,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 +80,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 +93,7 @@ jobs:
SOURCE_IMAGE=${{ steps.image_env.outputs.SOURCE_IMAGE }}
BUILD_ROOT=/d
tags: "${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot"
outputs: type=docker,dest=${{ steps.image_env.outputs.IMAGE_HOME }}/distroless-buildroot.tar
-
name: distroless
uses: docker/build-push-action@v6
Expand All @@ -100,16 +106,26 @@ 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=docker,dest=${{ steps.image_env.outputs.IMAGE_HOME }}/distroless.tar
-
name: Import image in containerd
run: |
find ${{ steps.image_env.outputs.IMAGE_HOME }}/ -type f
docker image load -i '${{ steps.image_env.outputs.IMAGE_HOME }}/distroless-buildroot.tar'
docker image load -i '${{ steps.image_env.outputs.IMAGE_HOME }}/distroless.tar'
-
name: examples/simple-flask
Expand All @@ -121,12 +137,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=docker,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 +180,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 +206,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 37e105c

Please sign in to comment.