72
72
echo dev-${version}-${date}-${version} > build_info/dev_tag
73
73
echo ${version}-${date} > build_info/prod_tag_dated
74
74
echo ${version} > build_info/mbed_os_version
75
+ echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]' > build_info/repository_owner
75
76
76
77
-
77
78
name : Archive information
87
88
outputs :
88
89
DEV_DIGEST : ${{ steps.docker_info_dev.outputs.DIGEST }}
89
90
PROD_DIGEST : ${{ steps.docker_info_prod.outputs.DIGEST }}
91
+ REPO_FILE_CHECK : ${{steps.repo_status.outcome}}
90
92
91
93
steps :
92
94
-
@@ -111,6 +113,8 @@ jobs:
111
113
echo "::set-output name=DOCKER_PROD_TAG_DATED::$value"
112
114
value=`cat mbed_os_version`
113
115
echo "::set-output name=MBED_OS_VERSION::$value"
116
+ value=`cat repository_owner`
117
+ echo "::set-output name=REPO_OWNER::$value"
114
118
115
119
-
116
120
name : Set up Docker Buildx
@@ -134,21 +138,35 @@ jobs:
134
138
with :
135
139
ref : refs/tags/${{ steps.build_info.outputs.MBED_OS_VERSION }}
136
140
141
+ # if we are trying to build docker image for an earlier version of mbed-os, either scheduled
142
+ # or manually, dockerfile will not exist. Then, skip the workflow
143
+ -
144
+ name : Skip the workflow if Dockerfile doesn't exist
145
+ id : repo_status
146
+ run : |
147
+ if [ ! -f "./docker_images/mbed-os-env/Dockerfile" ]; then
148
+ echo "Dockerfile doesn't in this repo."
149
+ exit 1
150
+ fi
151
+ continue-on-error : true
152
+
137
153
-
138
154
name : Build docker containers
155
+ if : steps.repo_status.outcome == 'success'
139
156
uses : docker/build-push-action@v2
140
157
id : docker_build_dev
141
158
with :
142
159
context : .
143
160
platforms : linux/amd64,linux/arm64
144
161
push : true
145
162
file : ./docker_images/mbed-os-env/Dockerfile
146
- tags : ghcr.io/${{ github.repository_owner }}/mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }}
163
+ tags : ghcr.io/${{ steps.build_info.outputs.REPO_OWNER }}/mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }}
147
164
148
165
149
166
test-container :
150
167
runs-on : ubuntu-latest
151
168
needs : build-container
169
+ if : needs.build-container.outputs.REPO_FILE_CHECK=='success'
152
170
strategy :
153
171
matrix :
154
172
platform : [linux/amd64, linux/arm64]
@@ -173,6 +191,8 @@ jobs:
173
191
echo "::set-output name=DOCKER_PROD_TAG_DATED::$value"
174
192
value=`cat mbed_os_version`
175
193
echo "::set-output name=MBED_OS_VERSION::$value"
194
+ value=`cat repository_owner`
195
+ echo "::set-output name=REPO_OWNER::$value"
176
196
177
197
# as the dev images are created only for master branch, run test against
178
198
# development branch of blinky
@@ -200,7 +220,6 @@ jobs:
200
220
if git rev-parse "$MBED_OS_VERSION" >/dev/null 2>&1; then
201
221
EXAMPLE_VERSION=$MBED_OS_VERSION
202
222
fi
203
- # echo "::set-output VERSION=MBED_OS_VERSION::$EXAMPLE_VERSION"
204
223
git checkout ${EXAMPLE_VERSION}
205
224
206
225
-
@@ -215,7 +234,7 @@ jobs:
215
234
id : docker_info
216
235
run : |
217
236
cd mbed-os-example-blinky/mbed-os
218
- DIGEST=$(python ./.github/workflows/ci_scripts/ghcr_utils.py -u ${{ github.repository_owner }} -p ${{ secrets.GITHUB_TOKEN }} get-digest -r mbed-os-env-tmp -t ${{ steps.build_info.outputs.DOCKER_DEV_TAG }} -p ${{ matrix.platform }} )
237
+ DIGEST=$(python ./.github/workflows/ci_scripts/ghcr_utils.py -u ${{ steps.build_info.outputs.REPO_OWNER }} -p ${{ secrets.GITHUB_TOKEN }} get-digest -r mbed-os-env-tmp -t ${{ steps.build_info.outputs.DOCKER_DEV_TAG }} -p ${{ matrix.platform }} )
219
238
echo "::set-output name=DIGEST::$DIGEST"
220
239
echo "Docker DIGEST: $DIGEST"
221
240
@@ -232,7 +251,7 @@ jobs:
232
251
password : ${{ secrets.GITHUB_TOKEN }}
233
252
registry : ghcr.io
234
253
options : -v ${{ github.workspace }}:/work -w=/work
235
- image : ghcr.io/${{ github.repository_owner }}/mbed-os-env-tmp@${{ steps.docker_info.outputs.DIGEST }}
254
+ image : ghcr.io/${{ steps.build_info.outputs.REPO_OWNER }}/mbed-os-env-tmp@${{ steps.docker_info.outputs.DIGEST }}
236
255
shell : bash
237
256
run : |
238
257
uname -m
@@ -268,18 +287,21 @@ jobs:
268
287
value=`cat mbed_os_version`
269
288
echo "MBED OS VERSION is $value"
270
289
echo "::set-output name=MBED_OS_VERSION::$value"
290
+ value=`cat repository_owner`
291
+ echo "::set-output name=REPO_OWNER::$value"
271
292
272
293
-
273
294
name : copy dev tag to prod tags
274
295
run : |
275
296
set -x
276
297
echo ${{ needs.test-container.result }}
298
+ REPO_OWNER=${{ steps.build_info.outputs.REPO_OWNER }}
277
299
upto_patch_version=${{ steps.build_info.outputs.MBED_OS_VERSION }}-latest
278
300
upto_min_version=${upto_patch_version%.[0-9]*}-latest
279
301
upto_major_version=${upto_patch_version%.[0-9]*.[0-9]*}-latest
280
- docker run quay.io/skopeo/stable --src-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} --dest-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} copy --all docker://ghcr.io/${{ github.repository_owner }} /mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }} docker://ghcr.io/${{ github.repository_owner } }/mbed-os-env:${upto_patch_version}
281
- docker run quay.io/skopeo/stable --src-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} --dest-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} copy --all docker://ghcr.io/${{ github.repository_owner }} /mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }} docker://ghcr.io/${{ github.repository_owner } }/mbed-os-env:${upto_min_version}
282
- docker run quay.io/skopeo/stable --src-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} --dest-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} copy --all docker://ghcr.io/${{ github.repository_owner }} /mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }} docker://ghcr.io/${{ github.repository_owner } }/mbed-os-env:${upto_major_version}
302
+ docker run quay.io/skopeo/stable --src-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} --dest-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} copy --all docker://ghcr.io/${REPO_OWNER} /mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }} docker://ghcr.io/${REPO_OWNER }/mbed-os-env:${upto_patch_version}
303
+ docker run quay.io/skopeo/stable --src-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} --dest-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} copy --all docker://ghcr.io/${REPO_OWNER} /mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }} docker://ghcr.io/${REPO_OWNER }/mbed-os-env:${upto_min_version}
304
+ docker run quay.io/skopeo/stable --src-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} --dest-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} copy --all docker://ghcr.io/${REPO_OWNER} /mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }} docker://ghcr.io/${REPO_OWNER }/mbed-os-env:${upto_major_version}
283
305
284
306
# copy to fixed tag
285
- docker run quay.io/skopeo/stable --src-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} --dest-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} copy --all docker://ghcr.io/${{ github.repository_owner }} /mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }} docker://ghcr.io/${{ github.repository_owner } }/mbed-os-env:${{ steps.build_info.outputs.DOCKER_PROD_TAG_DATED }}
307
+ docker run quay.io/skopeo/stable --src-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} --dest-creds=${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }} copy --all docker://ghcr.io/${REPO_OWNER} /mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }} docker://ghcr.io/${REPO_OWNER }/mbed-os-env:${{ steps.build_info.outputs.DOCKER_PROD_TAG_DATED }}
0 commit comments