diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index ea4bc92..532fd24 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -17,10 +17,7 @@ jobs: steps: - name: Set IMAGE run: echo "IMAGE=${GITHUB_REPOSITORY#*/docker-}" >> "${GITHUB_ENV}" - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - with: - fetch-depth: 0 - fetch-tags: true + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 - uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 - uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1 @@ -49,18 +46,37 @@ jobs: - name: Test the Docker image working-directory: ${{ env.IMAGE }} run: docker compose -f docker-compose.test.yml run sut - - name: Set RELEASE + - name: Set VERSION if: github.ref == 'refs/heads/main' run: | # shellcheck disable=SC2086 - RC="$(\grep ${IMAGE}/Dockerfile -e '^FROM' | \head -n 1 | \sed -e 's/^.*://; s/@.*$//;')" - if [[ "${RC}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] && ! \git show-ref --tags --verify --quiet "refs/tags/v${RC}" ; then - \echo "RELEASE=${RC}" >> "${GITHUB_ENV}" + VERSION="$(\grep ${IMAGE}/Dockerfile -e '^FROM' | \head -n 1 | \sed -e 's/@.*$//; s/^.*://;')" + if [[ "${VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] ; then + \echo "VERSION=${VERSION}" >> "${GITHUB_ENV}" fi + - name: Check if release already exists + if: env.VERSION != '' + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + id: check-release + with: + script: | + const { VERSION } = process.env + github.rest.repos.getReleaseByTag({ + owner: context.repo.owner, + repo: context.repo.repo, + tag: `v${VERSION}`, + }).catch(function(error) { + if (error.status === 404) { + core.info(`Release v${VERSION} not found`) + } else { + throw error + } + }) + result-encoding: string - name: Trigger release - if: ${{ env.RELEASE != '' }} + if: env.VERSION != '' && steps.check-release.outputs.result == 'undefined' uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e # v1.1.4 env: GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} with: - tag_name: v${{ env.RELEASE }} + tag_name: v${{ env.VERSION }}