Skip to content

Commit 49645d3

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

File tree

1 file changed

+39
-17
lines changed

1 file changed

+39
-17
lines changed

.github/workflows/main.yml

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ jobs:
4848
-
4949
name: Set up Docker Buildx
5050
uses: docker/setup-buildx-action@v3
51+
-
52+
name: Set up containerd
53+
uses: crazy-max/ghaction-setup-containerd@v2
54+
5155
-
5256
id: image_env
5357
run: |
@@ -58,6 +62,7 @@ jobs:
5862
'${{ matrix.repository }}'
5963
6064
docker pull "${SOURCE_IMAGE}" || true
65+
echo "IMAGE_HOME=$(mktemp -d)" >> "$GITHUB_OUTPUT"
6166
6267
echo ALPINE_VERSION="${ALPINE_VERSION}" >> "$GITHUB_OUTPUT"
6368
echo PYTHON_VERSION="${PYTHON_VERSION}" >> "$GITHUB_OUTPUT"
@@ -78,7 +83,10 @@ jobs:
7883
context: "."
7984
file: Dockerfile.alpine
8085
target: buildroot
86+
cache-to: |
87+
type=gha
8188
cache-from: |
89+
type=gha
8290
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
8391
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
8492
build-args: |
@@ -88,6 +96,7 @@ jobs:
8896
SOURCE_IMAGE=${{ steps.image_env.outputs.SOURCE_IMAGE }}
8997
BUILD_ROOT=/d
9098
tags: "${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot"
99+
outputs: type=oci,dest=${{ steps.image_env.outputs.IMAGE_HOME }}/buildroot.tar
91100
-
92101
name: distroless
93102
uses: docker/build-push-action@v6
@@ -100,33 +109,20 @@ jobs:
100109
file: Dockerfile.alpine
101110
# target: distroless-python
102111
cache-from: |
112+
type=gha
103113
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}
104114
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
105115
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
116+
cache-to: |
117+
type=gha
106118
build-args: |
107119
ALPINE_VERSION=${{ steps.image_env.outputs.ALPINE_VERSION }}
108120
BASE_IMAGE_DIGEST=${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
109121
PYTHON_VERSION=${{ steps.image_env.outputs.PYTHON_VERSION }}
110122
SOURCE_IMAGE=${{ steps.image_env.outputs.SOURCE_IMAGE }}
111123
BUILD_ROOT=/d
112124
tags: "${{ steps.image_env.outputs.IMAGE_TAG }}"
113-
114-
-
115-
name: examples/simple-flask
116-
uses: docker/build-push-action@v6
117-
with:
118-
context: "examples/simple-flask"
119-
platforms: |
120-
linux/amd64
121-
linux/arm64/v7
122-
linux/arm64/v8
123-
cache-from: |
124-
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}
125-
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
126-
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
127-
build-args: |
128-
SOURCE_IMAGE=${{ steps.image_env.outputs.IMAGE_TAG }}
129-
tags: "${{ steps.image_env.outputs.IMAGE_TAG }}-example1-amd64"
125+
outputs: type=oci,dest=${{ steps.image_env.outputs.IMAGE_HOME }}/image.tar
130126

131127
-
132128
name: Login to GitHub Container Registry
@@ -157,7 +153,10 @@ jobs:
157153
context: "."
158154
file: Dockerfile.alpine
159155
target: buildroot
156+
cache-to: |
157+
type=gha
160158
cache-from: |
159+
type=gha
161160
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
162161
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
163162
build-args: |
@@ -180,7 +179,10 @@ jobs:
180179
linux/arm64/v7
181180
linux/arm64/v8
182181
file: Dockerfile.alpine
182+
cache-to: |
183+
type=gha
183184
cache-from: |
185+
type=gha
184186
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}
185187
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
186188
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
@@ -204,6 +206,26 @@ jobs:
204206
index,manifest:distroless.alpine-version=${{ steps.image_env.outputs.ALPINE_VERSION }}
205207
index,manifest:distroless.base-image=alpine${{ steps.image_env.outputs.ALPINE_VERSION }}
206208
209+
-
210+
name: examples/simple-flask
211+
uses: docker/build-push-action@v6
212+
with:
213+
context: "examples/simple-flask"
214+
platforms: |
215+
linux/amd64
216+
linux/arm64/v7
217+
linux/arm64/v8
218+
cache-from: |
219+
type=gha
220+
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}
221+
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
222+
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
223+
build-args: |
224+
SOURCE_IMAGE=${{ steps.image_env.outputs.IMAGE_TAG }}
225+
tags: "${{ steps.image_env.outputs.IMAGE_TAG }}-example1-amd64"
226+
outputs: type=oci,dest=${{ steps.image_env.outputs.IMAGE_HOME }}/example1.tar
227+
228+
207229
update-dockerhub-desc:
208230
needs: [docker]
209231
runs-on: "ubuntu-latest"

0 commit comments

Comments
 (0)