Skip to content

Commit

Permalink
build(git): use cliff for changelog generation (#51)
Browse files Browse the repository at this point in the history
  • Loading branch information
eonu committed Dec 4, 2023
1 parent d8c7c9c commit 0d24777
Show file tree
Hide file tree
Showing 7 changed files with 85 additions and 17 deletions.
17 changes: 17 additions & 0 deletions .github/workflows/create-release-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,27 @@ jobs:
- name: Bump version
run: |
poetry run -q invoke release.build -- -v ${{ github.event.inputs.version }}
- name: Update changelog
uses: orhun/git-cliff-action@v2
id: cliff-changelog
with:
config: cliff.toml
args: --tag ${{ github.event.inputs.version }}
env:
OUTPUT: CHANGELOG.md
- name: Get changelog entry
uses: orhun/git-cliff-action@v2
id: cliff-entry
with:
config: cliff.toml
args: --unreleased --strip header
env:
OUTPUT: ENTRY.md
- name: Create pull request
uses: peter-evans/create-pull-request@v5.0.2
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: "release: v${{ github.event.inputs.version }}"
title: "release: v${{ github.event.inputs.version }}"
body: "${{ steps.cliff-entry.outputs.entry }}"
branch: release/${{ github.event.inputs.version }}
13 changes: 6 additions & 7 deletions .github/workflows/semantic-pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,21 @@ jobs:
didn't match the configured pattern. Please ensure that the subject
doesn't start with an uppercase character.
types: |
build
chore
ci
docs
feat
fix
perf
refactor
release
revert
style
tests
scopes: |
build
ci
deps
docs
git
perf
pkg
test
style
#\d+
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/tag-version-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ jobs:
uses: christophebedard/tag-version-commit@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
version_regex: 'release\: (v[0-9]+\.[0-9]+\.[0-9]+[a-z0-9]*)'
version_regex: 'release: (v[0-9]+\.[0-9]+\.[0-9]+[a-z0-9]*)'
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -91,3 +91,6 @@ venv.bak/

# Ruff
.ruff_cache

# Changelog entry
ENTRY.md
48 changes: 48 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Changelog

All notable changes to this project will be documented in this file.

## [0.1.0a2] - 2023-12-04

### Bug Fixes

- use `actions/checkout@v4` and fix permissions (#28)
- add `write-all` permissions to `create-release-pr` workflow (#29)
- provide version to `auto-changelog` (#31)
- fix multi-line `create-release-pr` workflow output (#32)
- fetch tags in `create-release-pr` workflow (#34)
- use `fetch-depth: 0` for workflow checkout (#36)
- use temporary file for changelog entry (#37)
- remove invalid `)` from `create-release-pr` workflow (#38)
- use EOF for multi-line changelog output (#40)
- silence `release.install` invoke task (#42)
- remove `entry.md` from `create-release-pr` workflow (#44)
- provide start/stop commit to `create-release-pr` workflow (#46)

### Refactor

- remove `CHANGELOG.md` (#48)

### Release

- v0.1.0a2 (#49)

## [0.1.0a1] - 2023-12-03

### Features

- add `semantic-pull-request` action (#21)
- add `tag-version-commit` workflow (#22)
- add `poetry-publish` workflow (#24)
- add `action-automatic-releases` workflow (#25)
- add `create-release-pr` workflow (#26)

### Miscellaneous Tasks

- remove `pkg` scope from `tag-version-commit` workflow (#23)

### Release

- v0.1.0a1 (#27)

<!-- generated by git-cliff -->
18 changes: 9 additions & 9 deletions cliff.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ body = """
{% 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 }}\
{% if commit.message is matching("^.*\\(#\\d+\\)$") %}\
- {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message }}\
{% endif %}\
{% endfor %}
{% endfor %}\n
"""
Expand All @@ -47,22 +49,20 @@ split_commits = false
commit_preprocessors = [
# { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"}, # replace issue numbers
]

# regex for parsing and grouping commits
commit_parsers = [
{ message = "^build", group = "Build System" },
{ message = "^chore|ci", group = "Miscellaneous Tasks" },
{ message = "^doc", group = "Documentation" },
{ message = "^feat", group = "Features" },
{ message = "^fix", group = "Bug Fixes" },
{ message = "^doc", group = "Documentation" },
{ message = "^perf", group = "Performance" },
{ message = "^refactor", group = "Refactor" },
{ message = "^release", group = "Release" },
{ message = "^revert", group = "Reversions" },
{ message = "^style", group = "Styling" },
{ message = "^test", group = "Testing" },
{ message = "^chore\\(release\\): prepare for", skip = true },
{ message = "^chore\\(deps\\)", skip = true },
{ message = "^chore\\(pr\\)", skip = true },
{ message = "^chore\\(pull\\)", skip = true },
{ message = "^chore|ci", group = "Miscellaneous Tasks" },
{ body = ".*security", group = "Security" },
{ message = "^revert", group = "Revert" },
]
# protect breaking changes from being skipped due to matching a skipping commit_parser
protect_breaking_commits = false
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ include = [
"feud",
"make",
"tests",
"CHANGELOG.md",
"LICENSE",
"Makefile",
"pyproject.toml",
Expand Down

0 comments on commit 0d24777

Please sign in to comment.