From 80d08d139a1c7fb6a6c0e1f043c12e13b6ec0f66 Mon Sep 17 00:00:00 2001 From: Bjarn Bronsveld Date: Sat, 19 Sep 2026 20:50:07 +0200 Subject: [PATCH] ci: use SDK release bot for changelog --- .github/workflows/update-changelog.yml | 60 ++++++++++++++++++++------ 1 file changed, 47 insertions(+), 13 deletions(-) diff --git a/.github/workflows/update-changelog.yml b/.github/workflows/update-changelog.yml index 6d2df5a..10135c7 100644 --- a/.github/workflows/update-changelog.yml +++ b/.github/workflows/update-changelog.yml @@ -5,7 +5,7 @@ on: types: [released] permissions: - contents: write + contents: read jobs: update: @@ -13,20 +13,54 @@ jobs: timeout-minutes: 5 steps: - - name: Checkout code - uses: actions/checkout@v7 + - name: Create release bot token + id: release-bot + uses: actions/create-github-app-token@fee1f7d63c2ff003460e3d139729b119787bc349 # v2 with: - ref: main + app-id: ${{ vars.LETTERMINT_RELEASE_APP_ID }} + private-key: ${{ secrets.LETTERMINT_RELEASE_APP_PRIVATE_KEY }} + owner: ${{ github.repository_owner }} + repositories: ${{ github.event.repository.name }} + permission-contents: write - - name: Update Changelog - uses: stefanzweifel/changelog-updater-action@v1 + - name: Checkout default branch + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: - latest-version: ${{ github.event.release.name }} - release-notes: ${{ github.event.release.body }} + ref: ${{ github.event.repository.default_branch }} + token: ${{ steps.release-bot.outputs.token }} - - name: Commit updated CHANGELOG - uses: stefanzweifel/git-auto-commit-action@v7 + - name: Update changelog from release notes + uses: stefanzweifel/changelog-updater-action@a938690fad7edf25368f37e43a1ed1b34303eb36 # v1 with: - branch: main - commit_message: Update CHANGELOG - file_pattern: CHANGELOG.md + latest-version: ${{ github.event.release.tag_name }} + release-notes: ${{ github.event.release.body }} + + - name: Verify changed paths + shell: bash + run: | + test -f CHANGELOG.md + test ! -L CHANGELOG.md + + mapfile -t changed_paths < <(git status --porcelain=v1 --untracked-files=all | cut -c4-) + for path in "${changed_paths[@]}"; do + if [[ "$path" != "CHANGELOG.md" ]]; then + echo "Unexpected changed path: $path" >&2 + exit 1 + fi + done + + - name: Commit updated changelog + shell: bash + env: + DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} + run: | + if git diff --quiet -- CHANGELOG.md; then + echo "CHANGELOG.md is already current." + exit 0 + fi + + git config user.name "lettermint-sdk-release-bot[bot]" + git config user.email "331370748+lettermint-sdk-release-bot[bot]@users.noreply.github.com" + git add -- CHANGELOG.md + git commit -m "Update CHANGELOG" + git push origin "HEAD:${DEFAULT_BRANCH}"