28
28
SETUP_BUILDKIT_TAG : " moby/buildkit:latest"
29
29
SCOUT_VERSION : " 1.13.0"
30
30
IMAGE_NAME : " docker/dockerfile-upstream"
31
- PLATFORMS : " linux/386,linux/amd64,linux/arm/v7,linux/arm64,linux/mips,linux/mipsle,linux/mips64,linux/mips64le,linux/s390x,linux/ppc64le,linux/riscv64"
32
31
33
32
jobs :
34
33
test :
@@ -44,39 +43,19 @@ jobs:
44
43
45
44
prepare :
46
45
runs-on : ubuntu-24.04
47
- if : github.event_name != 'schedule'
48
46
outputs :
49
- typ : ${{ steps.prep.outputs.typ }}
50
- push : ${{ steps.prep.outputs.push }}
51
- tag : ${{ steps.prep.outputs.tag }}
52
- tags : ${{ steps.prep.outputs.tags }}
47
+ channels : ${{ steps.channels.outputs.matrix }}
53
48
steps :
54
49
-
55
- name : Prepare
56
- id : prep
50
+ name : Channels matrix
51
+ id : channels
57
52
run : |
58
- TYP=master
59
- TAG=mainline
60
- PUSH=false
61
53
if [[ $GITHUB_REF == refs/tags/dockerfile/* ]]; then
62
- TYP=tag
63
- TAG=${GITHUB_REF#refs/tags/}
64
- PUSH=push
65
- elif [[ $GITHUB_REF == refs/heads/* ]]; then
66
- if [ $GITHUB_REF = "refs/heads/${{ github.event.repository.default_branch }}" ]; then
67
- PUSH=push
68
- fi
69
- fi
70
- if [ "$GITHUB_REPOSITORY" != "moby/buildkit" ]; then
71
- PUSH=false
72
- fi
73
- echo "typ=${TYP}" >>${GITHUB_OUTPUT}
74
- echo "push=${PUSH}" >>${GITHUB_OUTPUT}
75
- echo "tag=${TAG}" >>${GITHUB_OUTPUT}
76
- if [ "${TYP}" = "master" ]; then
77
- echo "tags=$(jq -cn --arg tag "$TAG" '[$tag, "labs"]')" >>${GITHUB_OUTPUT}
54
+ version=${GITHUB_REF#refs/tags/dockerfile/}
55
+ channel=$(echo "$version" | awk -F- '{print $NF}')
56
+ echo "matrix=$(jq -cn --arg channel "$channel" '[$channel]')" >>${GITHUB_OUTPUT}
78
57
else
79
- echo "tags =$(jq -cn --arg tag "$TAG" '[$tag ]')" >>${GITHUB_OUTPUT}
58
+ echo "matrix =$(jq -cn '["mainline", "labs" ]')" >>${GITHUB_OUTPUT}
80
59
fi
81
60
82
61
image :
@@ -87,22 +66,29 @@ jobs:
87
66
strategy :
88
67
fail-fast : false
89
68
matrix :
90
- tag : ${{ fromJson(needs.prepare.outputs.tags ) }}
69
+ channel : ${{ fromJson(needs.prepare.outputs.channels ) }}
91
70
steps :
92
71
-
93
72
name : Prepare
94
73
run : |
95
- if [[ "${{ matrix.tag }}" = "labs" ]] || [[ "${{ matrix.tag }}" == *-labs ]]; then
96
- echo "CACHE_SCOPE=frontend-labs" >>${GITHUB_ENV}
97
- else
98
- echo "CACHE_SCOPE=frontend-mainline" >>${GITHUB_ENV}
74
+ if [ "${{ matrix.channel }}" != "mainline" ]; then
75
+ echo "TAG_SUFFIX=-${{ matrix.channel }}" >> $GITHUB_ENV
76
+ fi
77
+ if [[ $GITHUB_REF == refs/tags/dockerfile/* ]]; then
78
+ version=${GITHUB_REF#refs/tags/dockerfile/}
79
+ channel=$(echo "$version" | awk -F- '{print $NF}')
80
+ if [[ "${version}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
81
+ echo "TAG_LATEST=latest" >> $GITHUB_ENV
82
+ elif [[ "${version}" =~ ^[0-9]+\.[0-9]+\.[0-9]+-$channel$ ]]; then
83
+ echo "TAG_LATEST=$channel" >> $GITHUB_ENV
84
+ fi
85
+ echo "TAG_VERSION=${version%%-*}" >> $GITHUB_ENV
99
86
fi
100
87
-
101
88
name : Checkout
102
89
uses : actions/checkout@v4
103
- -
104
- name : Expose GitHub Runtime
105
- uses : crazy-max/ghaction-github-runtime@v3
90
+ with :
91
+ fetch-depth : 0
106
92
-
107
93
name : Set up QEMU
108
94
uses : docker/setup-qemu-action@v3
@@ -113,22 +99,70 @@ jobs:
113
99
version : ${{ env.SETUP_BUILDX_VERSION }}
114
100
driver-opts : image=${{ env.SETUP_BUILDKIT_TAG }}
115
101
buildkitd-flags : --debug
102
+ -
103
+ name : Docker meta
104
+ id : meta
105
+ uses : docker/metadata-action@v5
106
+ with :
107
+ images : |
108
+ ${{ env.IMAGE_NAME }}
109
+ # versioning strategy
110
+ # # push tag dockerfile/1.17.0
111
+ # ## docker/dockerfile-upstream:1.17.0
112
+ # ## docker/dockerfile-upstream:1.17
113
+ # ## docker/dockerfile-upstream:1
114
+ # ## docker/dockerfile-upstream:latest
115
+ # # push tag dockerfile/1.17.0-labs
116
+ # ## docker/dockerfile-upstream:1.17.0-labs
117
+ # ## docker/dockerfile-upstream:1.17-labs
118
+ # ## docker/dockerfile-upstream:1-labs
119
+ # ## docker/dockerfile-upstream:labs
120
+ # # push prerelease tag dockerfile/1.17.0-rc1
121
+ # ## docker/dockerfile-upstream:1.17.0-rc1
122
+ # # push prerelease tag dockerfile/1.17.0-rc1-labs
123
+ # ## docker/dockerfile-upstream:1.17.0-rc1-labs
124
+ # # push on master
125
+ # ## docker/dockerfile-upstream:master
126
+ # ## docker/dockerfile-upstream:master-labs
127
+ tags : |
128
+ type=ref,event=branch,suffix=${{ env.TAG_SUFFIX }}
129
+ type=ref,event=pr,suffix=${{ env.TAG_SUFFIX }}
130
+ type=semver,pattern={{version}},value=${{ env.TAG_VERSION }},suffix=${{ env.TAG_SUFFIX }}
131
+ type=semver,pattern={{major}}.{{minor}},value=${{ env.TAG_VERSION }},suffix=${{ env.TAG_SUFFIX }}
132
+ type=semver,pattern={{major}},value=${{ env.TAG_VERSION }},suffix=${{ env.TAG_SUFFIX }}
133
+ type=raw,value=${{ env.TAG_LATEST }}
134
+ flavor : |
135
+ latest=false
136
+ annotations : |
137
+ org.opencontainers.image.title=Dockerfile Frontend
138
+ org.opencontainers.image.vendor=Moby
139
+ bake-target : frontend-meta-helper
116
140
-
117
141
name : Login to DockerHub
118
142
uses : docker/login-action@v3
119
- if : needs.prepare.outputs.push == 'push'
143
+ if : ${{ github.repository == 'moby/buildkit' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/dockerfile/')) }}
120
144
with :
121
145
username : ${{ secrets.DOCKERHUB_USERNAME }}
122
146
password : ${{ secrets.DOCKERHUB_TOKEN }}
123
147
-
124
148
name : Build
125
- run : |
126
- ./frontend/dockerfile/cmd/dockerfile-frontend/hack/release "${{ needs.prepare.outputs.typ }}" "${{ matrix.tag }}" "$IMAGE_NAME" "${{ needs.prepare.outputs.push }}"
149
+ uses : docker/bake-action@v6
150
+ with :
151
+ source : .
152
+ files : |
153
+ ./docker-bake.hcl
154
+ ${{ steps.meta.outputs.bake-file-tags }}
155
+ ${{ steps.meta.outputs.bake-file-annotations }}
156
+ targets : frontend-image-cross
157
+ push : ${{ github.repository == 'moby/buildkit' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/dockerfile/')) }}
158
+ provenance : mode=max
159
+ sbom : true
160
+ set : |
161
+ *.cache-from=type=gha,scope=frontend-${{ matrix.channel }}
162
+ *.cache-to=type=gha,scope=frontend-${{ matrix.channel }}
163
+ *.no-cache-filter=${{ (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/dockerfile/')) && 'base' || '' }}
127
164
env :
128
- RELEASE : ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v') }}
129
- CACHE_FROM : type=gha,scope=${{ env.CACHE_SCOPE }}
130
- CACHE_TO : type=gha,scope=${{ env.CACHE_SCOPE }}
131
- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
165
+ FRONTEND_CHANNEL : ${{ matrix.channel }}
132
166
133
167
scout :
134
168
runs-on : ubuntu-24.04
@@ -181,7 +215,6 @@ jobs:
181
215
# required to create GitHub release
182
216
contents : write
183
217
needs :
184
- - prepare
185
218
- test
186
219
- image
187
220
steps :
0 commit comments