name: Update README and CHANGELOG
on:
push:
tags:
- "v*.*.*"
jobs:
update-docs:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: main
- name: Install git-cliff
run: |
cargo install git-cliff
- name: Extract version from tag
id: version
run: |
TAG=${GITHUB_REF#refs/tags/v}
echo "version=${TAG}" >> $GITHUB_OUTPUT
echo "Version: ${TAG}"
- name: Update README.md version badge
run: |
VERSION=${{ steps.version.outputs.version }}
sed -i "s/version-[0-9]*\.[0-9]*\.[0-9]*-blue/version-${VERSION}-blue/" README.md
- name: Generate CHANGELOG.md
run: |
git-cliff --tag "v${{ steps.version.outputs.version }}" -o CHANGELOG.md
echo "â
CHANGELOG.md generated"
- name: Check if files were modified
id: check_changes
run: |
if git diff --quiet README.md CHANGELOG.md; then
echo "changed=false" >> $GITHUB_OUTPUT
echo "No changes to documentation files"
else
echo "changed=true" >> $GITHUB_OUTPUT
echo "Documentation files updated"
fi
- name: Commit and push if changed
if: steps.check_changes.outputs.changed == 'true'
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add README.md CHANGELOG.md
git commit -m "docs: update README and CHANGELOG for v${{ steps.version.outputs.version }}
- Update README version badge
- Generate CHANGELOG with git-cliff"
git push origin main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Success message
if: steps.check_changes.outputs.changed == 'true'
run: |
echo "â
Documentation updated for v${{ steps.version.outputs.version }}"
echo " - README.md version badge"
echo " - CHANGELOG.md generated"
- name: No changes message
if: steps.check_changes.outputs.changed == 'false'
run: |
echo "âšī¸ Documentation already up to date"