Skip to content

Commit 8e85234

Browse files
committed
ci: add automatic GitHub Release creation
1 parent e32be92 commit 8e85234

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

.github/workflows/ci.yml

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ on:
1010
branches: [main]
1111

1212
permissions:
13-
contents: read
13+
contents: write # Required for GitHub Release creation
1414
id-token: write # Required for Trusted Publishing (only used in publish job)
1515

1616
jobs:
@@ -144,3 +144,44 @@ jobs:
144144
with:
145145
skip-existing: true
146146
verbose: true
147+
148+
github-release:
149+
name: Create GitHub Release
150+
runs-on: ubuntu-latest
151+
needs: [validate-tag, build]
152+
if: needs.validate-tag.outputs.version != ''
153+
permissions:
154+
contents: write
155+
156+
steps:
157+
- uses: actions/checkout@v4
158+
159+
- name: Download distribution packages
160+
uses: actions/download-artifact@v7
161+
with:
162+
name: python-package-distributions
163+
path: dist/
164+
165+
- name: Generate release notes from CHANGELOG
166+
id: release_notes
167+
run: |
168+
VERSION="${{ needs.validate-tag.outputs.version }}"
169+
awk -v version="$VERSION" '
170+
/^##[[:space:]]*$version/ { in_release=1; next }
171+
in_release && /^##[[:space:]]/ { exit }
172+
in_release { print }
173+
' CHANGELOG.md > release_notes.md
174+
echo "notes<<$EOF" >> $GITHUB_OUTPUT
175+
cat release_notes.md >> $GITHUB_OUTPUT
176+
echo "$EOF" >> $GITHUB_OUTPUT
177+
178+
- name: Create GitHub Release
179+
uses: softprops/action-gh-release@v2
180+
with:
181+
tag_name: ${{ github.ref }}
182+
name: v${{ needs.validate-tag.outputs.version }}
183+
body: ${{ steps.release_notes.outputs.notes }}
184+
files: dist/*
185+
generate_release_notes: false
186+
env:
187+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)