|
23 | 23 | # Permissions |
24 | 24 | # ───────────── |
25 | 25 | # contents: write — create the GitHub Release and upload ZIP assets |
26 | | -# pull-requests: read — required by gh release --generate-notes to read |
27 | | -# merged PR titles for auto-generated release notes |
| 26 | +# pull-requests: read — required by generate-notes API to read merged |
| 27 | +# PR titles for auto-generated release notes |
28 | 28 | # |
29 | 29 | # Jobs |
30 | 30 | # ───── |
@@ -146,13 +146,37 @@ jobs: |
146 | 146 | ls -lh "CodeforcesSync-Edge-${{ env.VERSION }}.zip" |
147 | 147 | ls -lh "CodeforcesSync-Firefox-${{ env.VERSION }}.zip" |
148 | 148 |
|
| 149 | + - name: Generate release body |
| 150 | + run: | |
| 151 | + RELEASE_DATE=$(date -u +"%Y-%m-%d") |
| 152 | + echo "RELEASE_DATE=$RELEASE_DATE" >> "$GITHUB_ENV" |
| 153 | +
|
| 154 | + gh api \ |
| 155 | + repos/${{ github.repository }}/releases/generate-notes \ |
| 156 | + -f tag_name="${{ github.ref_name }}" \ |
| 157 | + --jq '.body' > generated-notes.md |
| 158 | +
|
| 159 | + node -e " |
| 160 | + const fs = require('fs'); |
| 161 | + const template = fs.readFileSync('.github/release-template.md', 'utf8'); |
| 162 | + const generated = fs.readFileSync('generated-notes.md', 'utf8'); |
| 163 | + const body = template |
| 164 | + .replace(/\$\{VERSION\}/g, process.env.VERSION) |
| 165 | + .replace(/\$\{RELEASE_DATE\}/g, process.env.RELEASE_DATE) |
| 166 | + .replace(/\$\{REPOSITORY\}/g, process.env.GITHUB_REPOSITORY) |
| 167 | + + '\n\n---\n\n## 📋 Automated Changelog\n\n' + generated; |
| 168 | + fs.writeFileSync('release-body.md', body); |
| 169 | + " |
| 170 | + env: |
| 171 | + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| 172 | + |
149 | 173 | - name: Create GitHub Release |
150 | 174 | run: | |
151 | 175 | gh release create "${{ github.ref_name }}" \ |
152 | 176 | "CodeforcesSync-Chrome-${{ env.VERSION }}.zip" \ |
153 | 177 | "CodeforcesSync-Edge-${{ env.VERSION }}.zip" \ |
154 | 178 | "CodeforcesSync-Firefox-${{ env.VERSION }}.zip" \ |
155 | | - --generate-notes \ |
| 179 | + --notes-file release-body.md \ |
156 | 180 | --title "CodeforcesSync ${{ github.ref_name }}" |
157 | 181 | env: |
158 | 182 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
0 commit comments