diff --git a/.github/workflows/docker_management.branch.yml b/.github/workflows/docker_management.branch.yml index 0979cfa..cf77a67 100644 --- a/.github/workflows/docker_management.branch.yml +++ b/.github/workflows/docker_management.branch.yml @@ -58,6 +58,7 @@ echo ${{ steps.extract_branch.outputs.branch }}-${date} > build_info/prod_tag_dated echo ${{ steps.extract_branch.outputs.branch }}-latest > build_info/prod_tag_latest echo ${{ steps.extract_branch.outputs.branch }} > build_info/mbed_os_version + echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]' > build_info/repository_owner - name: Archive information @@ -95,6 +96,8 @@ value=`cat prod_tag_latest` echo "::set-output name=DOCKER_PROD_TAG_LATEST::$value" echo "PROD TAG is $value" + value=`cat repository_owner` + echo "::set-output name=REPO_OWNER::$value" - name: Set up Docker Buildx @@ -125,7 +128,7 @@ platforms: linux/amd64,linux/arm64 push: true file: ./docker_images/mbed-os-env/Dockerfile - tags: ghcr.io/${{ github.repository_owner }}/mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }} + tags: ghcr.io/${{ steps.build_info.outputs.REPO_OWNER }}/mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }} test-container: runs-on: ubuntu-latest @@ -156,6 +159,8 @@ echo "::set-output name=DOCKER_PROD_TAG_LATEST::$value" value=`cat mbed_os_version` echo "::set-output name=MBED_OS_VERSION::$value" + value=`cat repository_owner` + echo "::set-output name=REPO_OWNER::$value" - name: Checkout @@ -165,7 +170,7 @@ name: Find DEV DOCKER DIGEST id: docker_info_dev run: | - 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 }} ) + 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 }} ) echo "::set-output name=DIGEST::$DIGEST" echo "Docker DIGEST: $DIGEST" @@ -191,7 +196,7 @@ password: ${{ secrets.GITHUB_TOKEN }} registry: ghcr.io options: -v ${{ github.workspace }}:/work -w=/work - image: ghcr.io/${{ github.repository_owner }}/mbed-os-env-tmp@${{ steps.docker_info_dev.outputs.DIGEST }} + image: ghcr.io/${{ steps.build_info.outputs.REPO_OWNER }}/mbed-os-env-tmp@${{ steps.docker_info_dev.outputs.DIGEST }} shell: bash run: | @@ -229,9 +234,11 @@ echo "::set-output name=DOCKER_PROD_TAG_DATED::$value" value=`cat prod_tag_latest` echo "::set-output name=DOCKER_PROD_TAG_LATEST::$value" + value=`cat repository_owner` + echo "::set-output name=REPO_OWNER::$value" - name: copy dev tag to prod run: | - 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_LATEST }} - 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 }} + 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/${{ steps.build_info.outputs.REPO_OWNER }}/mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }} docker://ghcr.io/${{ steps.build_info.outputs.REPO_OWNER }}/mbed-os-env:${{ steps.build_info.outputs.DOCKER_PROD_TAG_LATEST }} + 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/${{ steps.build_info.outputs.REPO_OWNER }}/mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }} docker://ghcr.io/${{ steps.build_info.outputs.REPO_OWNER }}/mbed-os-env:${{ steps.build_info.outputs.DOCKER_PROD_TAG_DATED }} \ No newline at end of file diff --git a/.github/workflows/docker_management.prune.yml b/.github/workflows/docker_management.prune.yml index e99cd52..56814e0 100644 --- a/.github/workflows/docker_management.prune.yml +++ b/.github/workflows/docker_management.prune.yml @@ -22,4 +22,4 @@ # deletion if only one image exists or if DOCKER_MANAGEMENT_TOKEN is not # setup. This shouldn't create any alarm as temporary image deletion is # not a critical activity. - python ./.github/workflows/ci_scripts/ghcr_utils.py -u ${{ github.actor }} -p ${{ secrets.DOCKER_MANAGEMENT_TOKEN }} delete-old-images -r mbed-os-env-tmp || true + python ./.github/workflows/ci_scripts/ghcr_utils.py -u ${{ github.repository_owner }} -p ${{ secrets.DOCKER_MANAGEMENT_TOKEN }} delete-old-images -r mbed-os-env-tmp || true \ No newline at end of file diff --git a/.github/workflows/docker_management.release.yml b/.github/workflows/docker_management.release.yml index 18d32fd..b176c33 100644 --- a/.github/workflows/docker_management.release.yml +++ b/.github/workflows/docker_management.release.yml @@ -72,6 +72,7 @@ echo dev-${version}-${date}-${version} > build_info/dev_tag echo ${version}-${date} > build_info/prod_tag_dated echo ${version} > build_info/mbed_os_version + echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]' > build_info/repository_owner - name: Archive information @@ -87,6 +88,7 @@ outputs: DEV_DIGEST: ${{ steps.docker_info_dev.outputs.DIGEST }} PROD_DIGEST: ${{ steps.docker_info_prod.outputs.DIGEST }} + REPO_FILE_CHECK: ${{steps.repo_status.outcome}} steps: - @@ -111,6 +113,8 @@ echo "::set-output name=DOCKER_PROD_TAG_DATED::$value" value=`cat mbed_os_version` echo "::set-output name=MBED_OS_VERSION::$value" + value=`cat repository_owner` + echo "::set-output name=REPO_OWNER::$value" - name: Set up Docker Buildx @@ -134,8 +138,21 @@ with: ref: refs/tags/${{ steps.build_info.outputs.MBED_OS_VERSION }} + # if we are trying to build docker image for an earlier version of mbed-os, either scheduled + # or manually, dockerfile will not exist. Then, skip the workflow + - + name: Skip the workflow if Dockerfile doesn't exist + id: repo_status + run: | + if [ ! -f "./docker_images/mbed-os-env/Dockerfile" ]; then + echo "Dockerfile doesn't in this repo." + exit 1 + fi + continue-on-error: true + - name: Build docker containers + if: steps.repo_status.outcome == 'success' uses: docker/build-push-action@v2 id: docker_build_dev with: @@ -143,12 +160,13 @@ platforms: linux/amd64,linux/arm64 push: true file: ./docker_images/mbed-os-env/Dockerfile - tags: ghcr.io/${{ github.repository_owner }}/mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }} + tags: ghcr.io/${{ steps.build_info.outputs.REPO_OWNER }}/mbed-os-env-tmp:${{ steps.build_info.outputs.DOCKER_DEV_TAG }} test-container: runs-on: ubuntu-latest needs: build-container + if: needs.build-container.outputs.REPO_FILE_CHECK=='success' strategy: matrix: platform: [linux/amd64, linux/arm64] @@ -173,6 +191,8 @@ echo "::set-output name=DOCKER_PROD_TAG_DATED::$value" value=`cat mbed_os_version` echo "::set-output name=MBED_OS_VERSION::$value" + value=`cat repository_owner` + echo "::set-output name=REPO_OWNER::$value" # as the dev images are created only for master branch, run test against # development branch of blinky @@ -200,7 +220,6 @@ if git rev-parse "$MBED_OS_VERSION" >/dev/null 2>&1; then EXAMPLE_VERSION=$MBED_OS_VERSION fi - # echo "::set-output VERSION=MBED_OS_VERSION::$EXAMPLE_VERSION" git checkout ${EXAMPLE_VERSION} - @@ -215,7 +234,7 @@ id: docker_info run: | cd mbed-os-example-blinky/mbed-os - 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 }} ) + 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 }} ) echo "::set-output name=DIGEST::$DIGEST" echo "Docker DIGEST: $DIGEST" @@ -232,7 +251,7 @@ password: ${{ secrets.GITHUB_TOKEN }} registry: ghcr.io options: -v ${{ github.workspace }}:/work -w=/work - image: ghcr.io/${{ github.repository_owner }}/mbed-os-env-tmp@${{ steps.docker_info.outputs.DIGEST }} + image: ghcr.io/${{ steps.build_info.outputs.REPO_OWNER }}/mbed-os-env-tmp@${{ steps.docker_info.outputs.DIGEST }} shell: bash run: | uname -m @@ -268,18 +287,21 @@ value=`cat mbed_os_version` echo "MBED OS VERSION is $value" echo "::set-output name=MBED_OS_VERSION::$value" + value=`cat repository_owner` + echo "::set-output name=REPO_OWNER::$value" - name: copy dev tag to prod tags run: | set -x echo ${{ needs.test-container.result }} + REPO_OWNER=${{ steps.build_info.outputs.REPO_OWNER }} upto_patch_version=${{ steps.build_info.outputs.MBED_OS_VERSION }}-latest upto_min_version=${upto_patch_version%.[0-9]*}-latest upto_major_version=${upto_patch_version%.[0-9]*.[0-9]*}-latest - 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} - 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} - 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} + 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} + 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} + 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} # copy to fixed tag - 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 }} + 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 }} \ No newline at end of file