Skip to content

Commit 3172ae3

Browse files
committed
Improve release creation: generate notes, upload notes, create/update latest and tag releases with changelog
1 parent 1825079 commit 3172ae3

1 file changed

Lines changed: 49 additions & 13 deletions

File tree

.github/workflows/build.yml

Lines changed: 49 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,23 +35,59 @@ jobs:
3535
- name: Rename executable
3636
run: mv build/ghostinjector-*.exe build/ghostinjector.exe
3737

38-
- name: Create Release
39-
if: (github.ref == 'refs/heads/main' && github.event_name == 'push') || startsWith(github.ref, 'refs/tags/v')
38+
- name: Ensure full git history
39+
run: |
40+
# Fetch full history so changelog generation works reliably
41+
git fetch --prune --unshallow || true
42+
43+
- name: Generate release notes
44+
id: changelog
45+
run: |
46+
set -e
47+
if [[ "${{ github.ref }}" == refs/heads/main ]]; then
48+
echo "Latest development build for commit ${{ github.sha }}" > release_notes.txt
49+
echo "" >> release_notes.txt
50+
echo "Changes since last release (shortlog):" >> release_notes.txt
51+
git --no-pager shortlog --pretty=format:"%h %s" -n main | head -200 >> release_notes.txt || true
52+
else
53+
TAG=${GITHUB_REF_NAME:-${GITHUB_REF#refs/tags/}}
54+
echo "Release $TAG" > release_notes.txt
55+
echo "" >> release_notes.txt
56+
echo "Changelog (shortlog):" >> release_notes.txt
57+
git --no-pager shortlog --pretty=format:"%h %s" -n $TAG | head -200 >> release_notes.txt || true
58+
fi
59+
echo "notes_path=release_notes.txt" >> $GITHUB_OUTPUT
60+
61+
- name: Upload release notes artifact
62+
uses: actions/upload-artifact@v4
63+
with:
64+
name: release-notes
65+
path: release_notes.txt
66+
67+
- name: Create/Update 'latest' release (development)
68+
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
69+
uses: softprops/action-gh-release@v2
70+
with:
71+
tag_name: latest
72+
name: Latest Build (Development)
73+
body_path: release_notes.txt
74+
files: build/ghostinjector.exe
75+
draft: false
76+
prerelease: true
77+
make_latest: true
78+
env:
79+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
80+
81+
- name: Create stable release for tags
82+
if: startsWith(github.ref, 'refs/tags/v')
4083
uses: softprops/action-gh-release@v2
4184
with:
42-
tag_name: ${{ (github.ref == 'refs/heads/main' && 'latest') || github.ref_name }}
43-
name: ${{ (github.ref == 'refs/heads/main' && 'Latest Build (Development)') || github.ref_name }}
44-
body: |
45-
## 🚀 Latest Development Build
46-
47-
**Commit:** ${{ github.sha }}
48-
49-
### 📥 Download
50-
- **Windows:** `ghostinjector.exe`
85+
tag_name: ${{ github.ref_name }}
86+
name: Release ${{ github.ref_name }}
87+
body_path: release_notes.txt
5188
files: build/ghostinjector.exe
5289
draft: false
53-
prerelease: ${{ github.ref == 'refs/heads/main' }}
54-
make_latest: ${{ github.ref == 'refs/heads/main' }}
90+
prerelease: false
5591
env:
5692
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5793

0 commit comments

Comments
 (0)