diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9bee9f2..fb0ccfb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,6 +8,10 @@ permissions: contents: read id-token: write +concurrency: + group: release-${{ github.event.release.tag_name }} + cancel-in-progress: false + jobs: release: name: Build and Publish @@ -16,10 +20,22 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v7 + with: + ref: ${{ github.event.release.tag_name }} - name: Get version from tag id: version - run: echo "version=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT + env: + RELEASE_TAG: ${{ github.event.release.tag_name }} + run: | + version="${RELEASE_TAG#v}" + + if ! [[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+([.-][0-9A-Za-z.-]+)?$ ]]; then + echo "Release tag must look like v1.2.3 or 1.2.3, got '${RELEASE_TAG}'" + exit 1 + fi + + echo "version=$version" >> "$GITHUB_OUTPUT" - name: Set up Python uses: actions/setup-python@v6