@@ -361,9 +361,68 @@ jobs:
361361 is-preview : ${{ env.is-preview }}
362362 notes-start-tag : ${{ steps.determine-notes-start-tag.outputs.notes-start-tag }}
363363
364+ update-changelog :
365+ name : ' Update CHANGELOG.md'
366+ needs : [workflow-variables, release, versioning]
367+ if : ${{ needs.workflow-variables.outputs.is-release == 'true' }}
368+ runs-on : ubuntu-latest
369+ env :
370+ GH_TOKEN : ${{ github.token }}
371+ release-version : ${{ needs.versioning.outputs.release-version }}
372+ steps :
373+ - name : ' Checkout ${{ github.ref }}'
374+ uses : actions/checkout@v6
375+ with :
376+ ref : ${{ github.ref }}
377+
378+ - name : ' Fetch release notes'
379+ shell : bash
380+ run : |
381+ gh release view ${{ env.release-version }} --json body --jq '.body' > /tmp/release-notes.txt
382+
383+ - name : ' Prepend entry to CHANGELOG.md'
384+ shell : bash
385+ run : |
386+ release_date=$(date -u +%Y-%m-%d)
387+ {
388+ echo "## ${{ env.release-version }} — ${release_date}"
389+ echo ""
390+ cat /tmp/release-notes.txt
391+ echo ""
392+ } > /tmp/new-entry.txt
393+ awk '
394+ /<!-- New entries are prepended automatically by the release workflow. -->/ {
395+ print
396+ print ""
397+ while ((getline line < "/tmp/new-entry.txt") > 0) print line
398+ close("/tmp/new-entry.txt")
399+ next
400+ }
401+ { print }
402+ ' CHANGELOG.md > /tmp/changelog-new.md
403+ mv /tmp/changelog-new.md CHANGELOG.md
404+
405+ - name : ' Configure git identity'
406+ uses : ' ./.github/actions/git/configure-identity'
407+
408+ - name : ' Commit and push CHANGELOG.md'
409+ shell : bash
410+ run : |
411+ git add CHANGELOG.md
412+ git diff --staged --quiet || (
413+ git commit -m "Update CHANGELOG.md for ${{ env.release-version }}" &&
414+ git pull --rebase origin ${{ github.ref_name }} &&
415+ git push
416+ )
417+
418+ - name : ' Write changelog summary'
419+ shell : bash
420+ run : |
421+ echo "✅ CHANGELOG.md updated for **${{ env.release-version }}**." >> $GITHUB_STEP_SUMMARY
422+
364423 merge-to-main :
365424 name : ' Merge ${{ github.ref_name }} into main'
366- needs : [workflow-variables, release, versioning]
425+ needs : [workflow-variables, release, versioning, update-changelog ]
367426 if : ${{ needs.workflow-variables.outputs.is-release == 'true' }}
368427 runs-on : ubuntu-latest
369428 permissions :
0 commit comments