@@ -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