7272 echo dev-${version}-${date}-${version} > build_info/dev_tag
7373 echo ${version}-${date} > build_info/prod_tag_dated
7474 echo ${version} > build_info/mbed_os_version
75+ echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]' > build_info/repository_owner
7576
7677 -
7778 name : Archive information
8788 outputs :
8889 DEV_DIGEST : ${{ steps.docker_info_dev.outputs.DIGEST }}
8990 PROD_DIGEST : ${{ steps.docker_info_prod.outputs.DIGEST }}
91+ REPO_FILE_CHECK : ${{steps.repo_status.outcome}}
9092
9193 steps :
9294 -
@@ -111,6 +113,8 @@ jobs:
111113 echo "::set-output name=DOCKER_PROD_TAG_DATED::$value"
112114 value=`cat mbed_os_version`
113115 echo "::set-output name=MBED_OS_VERSION::$value"
116+ value=`cat repository_owner`
117+ echo "::set-output name=REPO_OWNER::$value"
114118
115119 -
116120 name : Set up Docker Buildx
@@ -134,21 +138,35 @@ jobs:
134138 with :
135139 ref : refs/tags/${{ steps.build_info.outputs.MBED_OS_VERSION }}
136140
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+
137153 -
138154 name : Build docker containers
155+ if : steps.repo_status.outcome == 'success'
139156 uses : docker/build-push-action@v2
140157 id : docker_build_dev
141158 with :
142159 context : .
143160 platforms : linux/amd64,linux/arm64
144161 push : true
145162 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 }}
147164
148165
149166 test-container :
150167 runs-on : ubuntu-latest
151168 needs : build-container
169+ if : needs.build-container.outputs.REPO_FILE_CHECK=='success'
152170 strategy :
153171 matrix :
154172 platform : [linux/amd64, linux/arm64]
@@ -173,6 +191,8 @@ jobs:
173191 echo "::set-output name=DOCKER_PROD_TAG_DATED::$value"
174192 value=`cat mbed_os_version`
175193 echo "::set-output name=MBED_OS_VERSION::$value"
194+ value=`cat repository_owner`
195+ echo "::set-output name=REPO_OWNER::$value"
176196
177197 # as the dev images are created only for master branch, run test against
178198 # development branch of blinky
@@ -200,7 +220,6 @@ jobs:
200220 if git rev-parse "$MBED_OS_VERSION" >/dev/null 2>&1; then
201221 EXAMPLE_VERSION=$MBED_OS_VERSION
202222 fi
203- # echo "::set-output VERSION=MBED_OS_VERSION::$EXAMPLE_VERSION"
204223 git checkout ${EXAMPLE_VERSION}
205224
206225 -
@@ -215,7 +234,7 @@ jobs:
215234 id : docker_info
216235 run : |
217236 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 }} )
219238 echo "::set-output name=DIGEST::$DIGEST"
220239 echo "Docker DIGEST: $DIGEST"
221240
@@ -232,7 +251,7 @@ jobs:
232251 password : ${{ secrets.GITHUB_TOKEN }}
233252 registry : ghcr.io
234253 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 }}
236255 shell : bash
237256 run : |
238257 uname -m
@@ -268,18 +287,21 @@ jobs:
268287 value=`cat mbed_os_version`
269288 echo "MBED OS VERSION is $value"
270289 echo "::set-output name=MBED_OS_VERSION::$value"
290+ value=`cat repository_owner`
291+ echo "::set-output name=REPO_OWNER::$value"
271292
272293 -
273294 name : copy dev tag to prod tags
274295 run : |
275296 set -x
276297 echo ${{ needs.test-container.result }}
298+ REPO_OWNER=${{ steps.build_info.outputs.REPO_OWNER }}
277299 upto_patch_version=${{ steps.build_info.outputs.MBED_OS_VERSION }}-latest
278300 upto_min_version=${upto_patch_version%.[0-9]*}-latest
279301 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}
283305
284306 # 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