Skip to content

Commit 17dc9f0

Browse files
Single-source release version from pyproject.toml (#4)
1 parent a98024d commit 17dc9f0

1 file changed

Lines changed: 22 additions & 8 deletions

File tree

.github/workflows/build-release.yaml

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,41 @@ jobs:
2929
release:
3030
runs-on: ubuntu-latest
3131
needs: [build]
32+
permissions:
33+
contents: write
34+
outputs:
35+
new_version: ${{ steps.version.outputs.version }}
36+
released: ${{ steps.version.outputs.released }}
3237

3338
steps:
3439
- name: Repo checkout
3540
uses: actions/checkout@v4
36-
37-
- name: Bump version and push tag
38-
id: bump
39-
uses: mathieudutour/github-tag-action@v6.2
4041
with:
41-
github_token: ${{ secrets.GITHUB_TOKEN }}
42-
release_branches: main
42+
fetch-depth: 0
43+
44+
- name: Resolve version
45+
id: version
46+
run: |
47+
VERSION=$(grep -m1 '^version = ' pyproject.toml | sed -E 's/version = "(.*)"/\1/')
48+
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
49+
if git rev-parse "v$VERSION" >/dev/null 2>&1; then
50+
echo "released=false" >> "$GITHUB_OUTPUT"
51+
echo "Tag v$VERSION already exists — skipping release."
52+
else
53+
echo "released=true" >> "$GITHUB_OUTPUT"
54+
fi
4355
44-
- name: Release tag
56+
- name: Create release
57+
if: steps.version.outputs.released == 'true'
4558
uses: ncipollo/release-action@v1
4659
with:
47-
tag: ${{ steps.bump.outputs.new_tag }}
60+
tag: v${{ steps.version.outputs.version }}
4861
generateReleaseNotes: true
4962

5063
publish:
5164
runs-on: ubuntu-latest
5265
needs: [release]
66+
if: needs.release.outputs.released == 'true'
5367
permissions:
5468
id-token: write
5569
steps:

0 commit comments

Comments
 (0)