37
37
prepare :
38
38
runs-on : ubuntu-24.04
39
39
outputs :
40
- tag : ${{ steps.prep.outputs.tag }}
41
- push : ${{ steps.prep.outputs.push }}
42
40
platforms : ${{ steps.prep.outputs.platforms }}
43
41
steps :
44
42
-
48
46
name : Prepare
49
47
id : prep
50
48
run : |
51
- TAG=pr
52
- PUSH=false
53
- if [ "${{ github.event_name }}" = "schedule" ]; then
54
- TAG=nightly
55
- PUSH=push
56
- elif [[ $GITHUB_REF == refs/tags/v* ]]; then
57
- TAG=${GITHUB_REF#refs/tags/}
58
- PUSH=push
59
- elif [[ $GITHUB_REF == refs/heads/* ]]; then
60
- TAG=$(echo ${GITHUB_REF#refs/heads/} | sed -r 's#/+#-#g')
61
- if [ $GITHUB_REF = "refs/heads/${{ github.event.repository.default_branch }}" ]; then
62
- PUSH=push
63
- fi
64
- fi
65
- if [ "$GITHUB_REPOSITORY" != "moby/buildkit" ]; then
66
- PUSH=false
67
- fi
68
- echo "tag=${TAG}" >>${GITHUB_OUTPUT}
69
- echo "push=${PUSH}" >>${GITHUB_OUTPUT}
70
49
platforms=$(docker buildx bake release --print | jq -cr '.target."release".platforms')
71
50
echo "platforms=$platforms" >>${GITHUB_OUTPUT}
72
51
@@ -195,9 +174,23 @@ jobs:
195
174
-
196
175
name : Checkout
197
176
uses : actions/checkout@v4
177
+ with :
178
+ fetch-depth : 0
198
179
-
199
- name : Expose GitHub Runtime
200
- uses : crazy-max/ghaction-github-runtime@v3
180
+ name : Prepare
181
+ run : |
182
+ if [ -n "${{ matrix.target }}" ]; then
183
+ echo "TAG_SUFFIX=-${{ matrix.target }}" >> $GITHUB_ENV
184
+ fi
185
+ if [[ $GITHUB_REF == refs/tags/v* ]]; then
186
+ if [[ "${GITHUB_REF#refs/tags/}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
187
+ if [ -n "${{ matrix.target }}" ]; then
188
+ echo "TAG_LATEST=${{ matrix.target }}" >> $GITHUB_ENV
189
+ else
190
+ echo "TAG_LATEST=latest" >> $GITHUB_ENV
191
+ fi
192
+ fi
193
+ fi
201
194
-
202
195
name : Set up QEMU
203
196
uses : docker/setup-qemu-action@v3
@@ -208,23 +201,51 @@ jobs:
208
201
version : ${{ env.SETUP_BUILDX_VERSION }}
209
202
driver-opts : image=${{ env.SETUP_BUILDKIT_IMAGE }}
210
203
buildkitd-flags : --debug
204
+ -
205
+ name : Docker meta
206
+ id : meta
207
+ uses : docker/metadata-action@v5
208
+ with :
209
+ images : |
210
+ ${{ env.IMAGE_NAME }}
211
+ tags : |
212
+ type=schedule,pattern=nightly,suffix=${{ env.TAG_SUFFIX }}
213
+ type=ref,event=branch,suffix=${{ env.TAG_SUFFIX }}
214
+ type=ref,event=pr,suffix=${{ env.TAG_SUFFIX }}
215
+ type=semver,pattern={{raw}},suffix=${{ env.TAG_SUFFIX }}
216
+ type=raw,value=${{ env.TAG_LATEST }}
217
+ flavor : |
218
+ latest=false
219
+ annotations : |
220
+ org.opencontainers.image.title=BuildKit
221
+ org.opencontainers.image.vendor=Moby
222
+ bake-target : meta-helper
211
223
-
212
224
name : Login to DockerHub
213
- if : needs.prepare.outputs.push == 'push'
225
+ if : ${{ github.repository == 'moby/buildkit' && (github.event_name == 'schedule' || github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v')) }}
214
226
uses : docker/login-action@v3
215
227
with :
216
228
username : ${{ secrets.DOCKERHUB_USERNAME }}
217
229
password : ${{ secrets.DOCKERHUB_TOKEN }}
218
230
-
219
- name : Build ${{ needs.prepare.outputs.tag }}
220
- run : |
221
- ./hack/images "${{ needs.prepare.outputs.tag }}" "$IMAGE_NAME" "${{ needs.prepare.outputs.push }}"
231
+ name : Build
232
+ uses : docker/bake-action@v6
233
+ with :
234
+ source : .
235
+ files : |
236
+ ./docker-bake.hcl
237
+ ${{ steps.meta.outputs.bake-file-tags }}
238
+ ${{ steps.meta.outputs.bake-file-annotations }}
239
+ targets : image-cross
240
+ push : ${{ github.repository == 'moby/buildkit' && (github.event_name == 'schedule' || github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v')) }}
241
+ provenance : mode=max
242
+ sbom : true
243
+ set : |
244
+ *.cache-from=type=gha,scope=image${{ matrix.target-stage }}
245
+ *.cache-to=type=gha,scope=image${{ matrix.target-stage }}
246
+ *.no-cache-filter=${{ (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v')) && 'buildkit-export,gobuild-base,rootless' || '' }}
222
247
env :
223
- RELEASE : ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v') }}
224
- TARGET : ${{ matrix.target-stage }}
225
- CACHE_FROM : type=gha,scope=image${{ matrix.target-stage }}
226
- CACHE_TO : type=gha,scope=image${{ matrix.target-stage }}
227
- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
248
+ IMAGE_TARGET : ${{ matrix.target }}
228
249
229
250
scout :
230
251
runs-on : ubuntu-24.04
0 commit comments