|
31 | 31 | github-token: ${{ secrets.GITHUB_TOKEN }} |
32 | 32 | dry: true |
33 | 33 |
|
| 34 | + - name: Promote CHANGELOG.md [Unreleased] section |
| 35 | + if: steps.semrel.outputs.version != '' |
| 36 | + env: |
| 37 | + VERSION: ${{ steps.semrel.outputs.version }} |
| 38 | + run: | |
| 39 | + set -euo pipefail |
| 40 | + DATE=$(date -u +%Y-%m-%d) |
| 41 | + if ! grep -qE '^## \[Unreleased\]$' CHANGELOG.md; then |
| 42 | + echo "::error::CHANGELOG.md is missing the '## [Unreleased]' section. Add the section back to maintain release-stamping." |
| 43 | + exit 1 |
| 44 | + fi |
| 45 | + # Insert a versioned heading immediately after [Unreleased] so the |
| 46 | + # entries authored under [Unreleased] become the new release block. |
| 47 | + # The next [Unreleased] section starts empty for the following release. |
| 48 | + awk -v ver="$VERSION" -v date="$DATE" ' |
| 49 | + /^## \[Unreleased\]$/ { |
| 50 | + print |
| 51 | + print "" |
| 52 | + print "## [" ver "] - " date |
| 53 | + next |
| 54 | + } |
| 55 | + { print } |
| 56 | + ' CHANGELOG.md > CHANGELOG.md.tmp |
| 57 | + mv CHANGELOG.md.tmp CHANGELOG.md |
| 58 | +
|
| 59 | + - name: Commit CHANGELOG.md |
| 60 | + if: steps.semrel.outputs.version != '' |
| 61 | + env: |
| 62 | + VERSION: ${{ steps.semrel.outputs.version }} |
| 63 | + run: | |
| 64 | + set -euo pipefail |
| 65 | + git config user.name "github-actions[bot]" |
| 66 | + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" |
| 67 | + git add CHANGELOG.md |
| 68 | + if git diff --cached --quiet; then |
| 69 | + echo "CHANGELOG.md unchanged; skipping commit." |
| 70 | + exit 0 |
| 71 | + fi |
| 72 | + git commit -m "chore(release): stamp CHANGELOG for v${VERSION} [skip ci]" |
| 73 | + git push origin HEAD:main |
| 74 | +
|
34 | 75 | - name: Generate SBOM |
35 | 76 | if: steps.semrel.outputs.version != '' |
36 | 77 | uses: anchore/sbom-action@e22c389904149dbc22b58101806040fa8d37a610 # v0 |
|
0 commit comments