# GitHub Action - git-cliff *Source: [GitHub Action - git-cliff - Generate Changelog | thiscodeWorks](https://www.thiscodeworks.com/61faffd1b783be0015bbafac)* This [[GitHub Action]] generates/updates a repository's `CHANGELOG.md` on every push into branches `master` or `main` using [[Git-Cliff]], [[Keep a Changelog]], and this [[GitHub Action]]: ```yaml name: Generate CHANGELOG.md on: repository_dispatch: workflow_dispatch: push: branches: - main - master jobs: changelog: name: Generate changelog runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 with: fetch-depth: 0 token: ${{ secrets.GITHUB_TOKEN }}   - name: Generate a changelog uses: orhun/git-cliff-action@v1 id: git-cliff with: config: ./cliff.toml args: --verbose env: OUTPUT: ./CHANGELOG.md   - name: Print the changelog run: cat "${{ steps.git-cliff.outputs.changelog }}"   - name: Commit and Push Changes uses: actions-js/push@master with: github_token: ${{ secrets.GITHUB_TOKEN }} ``` ## Configuration File - `cliff.toml` *Source: [Configuration file for `git-cliff` (Changelog Generator) | thiscodeWorks](https://www.thiscodeworks.com/61faff37b783be0015bbafaa)* ```toml # configuration file for git-cliff   [changelog] header = """ # Changelog *All notable changes to this project will be documented in this file.*\n """ body = """ {% if version %}\ ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} {% else %}\ ## [Unreleased] {% endif %}\ {% for group, commits in commits | group_by(attribute="group") %} ### {{ group | upper_first }} {% for commit in commits %} - {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message | upper_first }}\ {% endfor %} {% endfor %}\n """ trim = true footer = """ *** *Changelog generated by [git-cliff](https://github.com/orhun/git-cliff).* """ [git] conventional_commits = true filter_unconventional = true commit_parsers = [ { message = "^feat", group = "Features"}, { message = "^fix", group = "Bug Fixes"}, { message = "^bug", group = "Bug Fixes"}, { message = "^doc", group = "Documentation"}, { message = "^perf", group = "Performance"}, { message = "^app", group = "Shiny App"}, { message = "^api", group = "API"}, { message = "^data", group = "Data"}, { message = "^db", group = "Database"}, { message = "^refactor", group = "Refactor"}, { message = "^style", group = "Styling"}, { message = "^test", group = "Testing"}, { message = "^chore\\(release\\): prepare for", skip = true}, { message = "^chore", group = "Miscellaneous Tasks"}, { body = ".*security", group = "Security"}, ] filter_commits = false tag_pattern = "v[0-9]*" skip_tags = "v0.1.0-beta.1" ignore_tags = "" topo_order = false sort_commits = "oldest" ``` *** ## Appendix: Links - [[Code]] - [[Development]] - [[GitHub]] - [[Automation]] - [[YAML]] - [[Git-Cliff]] - [[Keep a Changelog]] - [[Git]] *Backlinks:* ```dataview list from [[GitHub Action - git-cliff]] AND -"Changelog" ```