berangerthomas commited on
Commit
de5407c
·
1 Parent(s): a50b139

Add GitHub Action to auto-create releases from tags

Browse files
.github/workflows/create-release.yml ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Create Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ permissions:
9
+ contents: write
10
+
11
+ jobs:
12
+ create-release:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - name: Checkout code
16
+ uses: actions/checkout@v4
17
+
18
+ - name: Extract version from tag
19
+ id: get_version
20
+ run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
21
+
22
+ - name: Extract changelog entry
23
+ id: get_changelog
24
+ run: |
25
+ VERSION=${GITHUB_REF#refs/tags/v}
26
+ # Extract content between ## [VERSION] and next ## [ or end of file
27
+ CHANGELOG=$(awk '/^## \['$VERSION'\]/{found=1; next} /^## \[/{found=0} found' CHANGELOG.md | sed '/^$/d')
28
+ # If empty, try without 'v' prefix
29
+ if [ -z "$CHANGELOG" ]; then
30
+ CHANGELOG=$(awk '/^## \['${VERSION#v}'\]/{found=1; next} /^## \[/{found=0} found' CHANGELOG.md | sed '/^$/d')
31
+ fi
32
+ echo "CHANGELOG<<EOF" >> $GITHUB_OUTPUT
33
+ echo "$CHANGELOG" >> $GITHUB_OUTPUT
34
+ echo "EOF" >> $GITHUB_OUTPUT
35
+
36
+ - name: Create Release
37
+ uses: softprops/action-gh-release@v1
38
+ with:
39
+ name: ${{ steps.get_version.outputs.VERSION }}
40
+ body: ${{ steps.get_changelog.outputs.CHANGELOG }}
41
+ draft: false
42
+ prerelease: false
43
+ env:
44
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}