Skip to content

Commit 37e105c

Browse files
committed
build: use containerd to load multi-platform images
1 parent 92d7ba2 commit 37e105c

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

.github/workflows/main.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ jobs:
4848
-
4949
name: Set up Docker Buildx
5050
uses: docker/setup-buildx-action@v3
51+
5152
-
5253
id: image_env
5354
run: |
@@ -58,6 +59,7 @@ jobs:
5859
'${{ matrix.repository }}'
5960
6061
docker pull "${SOURCE_IMAGE}" || true
62+
echo "IMAGE_HOME=$(mktemp -d)" >> "$GITHUB_OUTPUT"
6163
6264
echo ALPINE_VERSION="${ALPINE_VERSION}" >> "$GITHUB_OUTPUT"
6365
echo PYTHON_VERSION="${PYTHON_VERSION}" >> "$GITHUB_OUTPUT"
@@ -78,7 +80,10 @@ jobs:
7880
context: "."
7981
file: Dockerfile.alpine
8082
target: buildroot
83+
cache-to: |
84+
type=gha
8185
cache-from: |
86+
type=gha
8287
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
8388
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
8489
build-args: |
@@ -88,6 +93,7 @@ jobs:
8893
SOURCE_IMAGE=${{ steps.image_env.outputs.SOURCE_IMAGE }}
8994
BUILD_ROOT=/d
9095
tags: "${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot"
96+
outputs: type=docker,dest=${{ steps.image_env.outputs.IMAGE_HOME }}/distroless-buildroot.tar
9197
-
9298
name: distroless
9399
uses: docker/build-push-action@v6
@@ -100,16 +106,26 @@ jobs:
100106
file: Dockerfile.alpine
101107
# target: distroless-python
102108
cache-from: |
109+
type=gha
103110
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}
104111
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
105112
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
113+
cache-to: |
114+
type=gha
106115
build-args: |
107116
ALPINE_VERSION=${{ steps.image_env.outputs.ALPINE_VERSION }}
108117
BASE_IMAGE_DIGEST=${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
109118
PYTHON_VERSION=${{ steps.image_env.outputs.PYTHON_VERSION }}
110119
SOURCE_IMAGE=${{ steps.image_env.outputs.SOURCE_IMAGE }}
111120
BUILD_ROOT=/d
112121
tags: "${{ steps.image_env.outputs.IMAGE_TAG }}"
122+
outputs: type=docker,dest=${{ steps.image_env.outputs.IMAGE_HOME }}/distroless.tar
123+
-
124+
name: Import image in containerd
125+
run: |
126+
find ${{ steps.image_env.outputs.IMAGE_HOME }}/ -type f
127+
docker image load -i '${{ steps.image_env.outputs.IMAGE_HOME }}/distroless-buildroot.tar'
128+
docker image load -i '${{ steps.image_env.outputs.IMAGE_HOME }}/distroless.tar'
113129
114130
-
115131
name: examples/simple-flask
@@ -121,12 +137,19 @@ jobs:
121137
linux/arm64/v7
122138
linux/arm64/v8
123139
cache-from: |
140+
type=gha
124141
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}
125142
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
126143
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
127144
build-args: |
128145
SOURCE_IMAGE=${{ steps.image_env.outputs.IMAGE_TAG }}
129146
tags: "${{ steps.image_env.outputs.IMAGE_TAG }}-example1-amd64"
147+
outputs: type=docker,dest=${{ steps.image_env.outputs.IMAGE_HOME }}/example1.tar
148+
149+
-
150+
name: Import image in containerd
151+
run: |
152+
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'
130153
131154
-
132155
name: Login to GitHub Container Registry
@@ -157,7 +180,10 @@ jobs:
157180
context: "."
158181
file: Dockerfile.alpine
159182
target: buildroot
183+
cache-to: |
184+
type=gha
160185
cache-from: |
186+
type=gha
161187
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
162188
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
163189
build-args: |
@@ -180,7 +206,10 @@ jobs:
180206
linux/arm64/v7
181207
linux/arm64/v8
182208
file: Dockerfile.alpine
209+
cache-to: |
210+
type=gha
183211
cache-from: |
212+
type=gha
184213
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}
185214
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
186215
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}

0 commit comments

Comments
 (0)