Skip to content

Commit bb83540

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

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

.github/workflows/main.yml

Lines changed: 34 additions & 0 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,16 +109,28 @@ 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 }}"
125+
outputs: type=oci,dest=${{ steps.image_env.outputs.IMAGE_HOME }}/image.tar
126+
127+
-
128+
name: Import image in containerd
129+
run: |
130+
echo 'import 1'
131+
skopeo copy 'oci-archive:${{ steps.image_env.outputs.IMAGE_HOME }}/buildroot.tar' 'docker-daemon:${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot'
132+
echo 'import 2'
133+
skopeo copy 'oci-archive:${{ steps.image_env.outputs.IMAGE_HOME }}/image.tar' 'docker-daemon:${{ steps.image_env.outputs.IMAGE_TAG }}'
113134
114135
-
115136
name: examples/simple-flask
@@ -121,12 +142,19 @@ jobs:
121142
linux/arm64/v7
122143
linux/arm64/v8
123144
cache-from: |
145+
type=gha
124146
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}
125147
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
126148
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
127149
build-args: |
128150
SOURCE_IMAGE=${{ steps.image_env.outputs.IMAGE_TAG }}
129151
tags: "${{ steps.image_env.outputs.IMAGE_TAG }}-example1-amd64"
152+
outputs: type=oci,dest=${{ steps.image_env.outputs.IMAGE_HOME }}/example1.tar
153+
154+
-
155+
name: Import image in containerd
156+
run: |
157+
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'
130158
131159
-
132160
name: Login to GitHub Container Registry
@@ -157,7 +185,10 @@ jobs:
157185
context: "."
158186
file: Dockerfile.alpine
159187
target: buildroot
188+
cache-to: |
189+
type=gha
160190
cache-from: |
191+
type=gha
161192
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
162193
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}
163194
build-args: |
@@ -180,7 +211,10 @@ jobs:
180211
linux/arm64/v7
181212
linux/arm64/v8
182213
file: Dockerfile.alpine
214+
cache-to: |
215+
type=gha
183216
cache-from: |
217+
type=gha
184218
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}
185219
type=registry,ref=${{ steps.image_env.outputs.IMAGE_TAG }}-buildroot
186220
type=registry,ref=${{ steps.image_env.outputs.SOURCE_IMAGE }}@${{ steps.image_env.outputs.BASE_IMAGE_DIGEST }}

0 commit comments

Comments
 (0)