From 5ff031ea59119fe883b49626805c9aa1787c9298 Mon Sep 17 00:00:00 2001 From: sevenzing Date: Wed, 29 Jan 2025 11:24:42 +0300 Subject: [PATCH 1/3] fix: update tag extractor to support prereleases --- .github/workflows/_docker-build-push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/_docker-build-push.yml b/.github/workflows/_docker-build-push.yml index d6e16e8e5..3ff7aeea0 100644 --- a/.github/workflows/_docker-build-push.yml +++ b/.github/workflows/_docker-build-push.yml @@ -48,7 +48,7 @@ jobs: id: regex with: text: ${{ github.ref }} - regex: '^(refs\/tags\/${{ inputs.service-name }}\/(v\d+\.\d+\.\d+))|(refs\/heads\/(main))$' + regex: '^(refs\/tags\/${{ inputs.service-name }}\/v([^\/]+))|(refs\/heads\/(main))$' - name: Extract tag name id: tags_extractor From fb22bf8f2c3053f69d421baf0e3d688fe2546b2b Mon Sep 17 00:00:00 2001 From: sevenzing Date: Wed, 29 Jan 2025 12:27:54 +0300 Subject: [PATCH 2/3] add full semver regex and do not set latest when prelease --- .github/workflows/_docker-build-push.yml | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/.github/workflows/_docker-build-push.yml b/.github/workflows/_docker-build-push.yml index 3ff7aeea0..123a44361 100644 --- a/.github/workflows/_docker-build-push.yml +++ b/.github/workflows/_docker-build-push.yml @@ -48,14 +48,28 @@ jobs: id: regex with: text: ${{ github.ref }} - regex: '^(refs\/tags\/${{ inputs.service-name }}\/v([^\/]+))|(refs\/heads\/(main))$' + # https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string + regex: '^(refs\/tags\/${{ inputs.service-name }}\/v((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?))|(refs\/heads\/(main))$' - name: Extract tag name id: tags_extractor run: | - t=${{ steps.regex.outputs.group2 }} - m=${{ steps.regex.outputs.group4 }} - (if ! [[ "$t" == "" ]]; then echo tags=${{ env.IMAGE_NAME }}:$t, ${{ env.IMAGE_NAME }}:latest; elif ! [[ "$m" == "" ]]; then echo tags=${{ env.IMAGE_NAME }}:$m; else echo tags=; fi) >> $GITHUB_OUTPUT + version=${{ steps.regex.outputs.group2 }} + prerelease=${{ steps.regex.outputs.group6 }} + main=${{ steps.regex.outputs.group9 }} + + if [[ -n "$version" ]]; then + if [[ -n "$prerelease" ]]; then + echo "tags=${{ env.IMAGE_NAME }}:$version" >> $GITHUB_OUTPUT + else + echo "tags=${{ env.IMAGE_NAME }}:$version, ${{ env.IMAGE_NAME }}:latest" >> $GITHUB_OUTPUT + fi + elif [[ -n "$main" ]]; then + echo "tags=${{ env.IMAGE_NAME }}:$main" >> $GITHUB_OUTPUT + else + echo "tags=" >> $GITHUB_OUTPUT + fi + - name: Extract metadata for Docker id: meta From 0182303fabf9b808f0eafc4c4de2dfe11fa3d549 Mon Sep 17 00:00:00 2001 From: sevenzing Date: Wed, 29 Jan 2025 12:57:31 +0300 Subject: [PATCH 3/3] fix: update regex in swagger push job --- .github/workflows/_push_swagger.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/_push_swagger.yml b/.github/workflows/_push_swagger.yml index a1183fd03..2d560cf05 100644 --- a/.github/workflows/_push_swagger.yml +++ b/.github/workflows/_push_swagger.yml @@ -60,12 +60,14 @@ jobs: - name: Get the current tag, branch, or commit hash id: git_info + # regex from: + # https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string run: | if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ ! -z "${{ inputs.version }}" ]; then echo "version=${{ inputs.version }}" >> $GITHUB_ENV else - if [[ "${GITHUB_REF}" =~ refs/tags/${{ inputs.service_name }}/v[0-9]+\.[0-9]+\.[0-9]+ ]]; then - version=$(echo "${GITHUB_REF}" | grep -o 'v[0-9]\+\.[0-9]\+\.[0-9]\+') + if [[ "${GITHUB_REF}" =~ refs/tags/${{ inputs.service_name }}/v(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(-((0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*))*))?(\+([0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*))?$ ]]; then + version=$(echo "${GITHUB_REF}" | sed -E 's|.*/v||') echo "version=${version}" >> $GITHUB_ENV # If it's the main branch