GitHub Action
Github Release Changelog Generator
This Action returns a markdown formatted changelog between two git references. There are other projects that use milestones, labeled PRs, etc. Those are just to much work for simple projects.
I just wanted a simple way to populate the body of a GitHub Release.
- run: echo "previous_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo '')" >> $GITHUB_ENV
- name: Generate changelog
id: changelog
uses: jaywcjlove/changelog-generator@main
if: env.previous_tag
with:
token: ${{ secrets.GITHUB_TOKEN }}
filter-author: (jaywcjlove|小弟调调™|dependabot|renovate\\[bot\\]|dependabot\\[bot\\]|Renovate Bot)
filter: '[R|r]elease[d]\s+[v|V]\d(\.\d+){0,2}'
Then you can to use the resulting changelog.
- name: Get the changelog
run: echo "${{ steps.changelog.outputs.changelog }}"
- name: Create Release
uses: ncipollo/release-action@v1
if: steps.create_tag.outputs.successful
with:
token: ${{ secrets.GITHUB_TOKEN }}
name: ${{ steps.create_tag.outputs.version }}
tag: ${{ steps.create_tag.outputs.version }}
body: |
${{ steps.changelog.outputs.compareurl }}
${{ steps.changelog.outputs.changelog }}
Document Website: https://raw.githack.com/jaywcjlove/changelog-generator/${{ steps.changelog.outputs.gh-pages-short-hash }}/index.html
Define the log display template (#111).
- name: Generate changelog
uses: jaywcjlove/changelog-generator@main
with:
token: ${{ secrets.GITHUB_TOKEN }}
filter-author: (jaywcjlove|小弟调调™|dependabot|renovate\\[bot\\]|dependabot\\[bot\\]|Renovate Bot)
filter: '[R|r]elease[d]\s+[v|V]\d(\.\d+){0,2}'
template: |
## Bugs
{{fix}}
## Feature
{{feat}}{{type}}
## Document
{{doc}}
Only use the following Git Commit Messages. A simple and small footprint is critical here.
- 🌟
feat
Use when you add something entirely new. E.g:feat(Button): add type props.
- 🐞
fix
Use when you fix a bug — need I say more? E.g.fix: Case conversion.
- 📖
doc
/docs
Use when you add documentation like README.md, or even inline docs. E.g.doc(Color): API Interface.
- 💄
chore
Changes to the build process or auxiliary tools. E.g.chore(Color): API Interface.
- 🎨
style
Format (changes that do not affect code execution). E.g.style(Alert): API Interface.
- 🆎
type
Typescript type bug fixes. E.g.type(Alert): fix type error.
- ⛑
test
Add and modify test cases. E.g.test(Alert): Add test case.
- 🐝
refactor
Refactoring (i.e. code changes that are not new additions or bug fixes). E.g.refactor(Alert): API Interface.
- 🌍
website
Documentation website changes. E.g.website(Alert): Add example.
- 🔙
revert
Revert last commit. E.g.revert: Add test case.
- 💊
clean
clean up. E.g.clean: remove comment code.
- 📈
perf
Change the code to improve performance. E.g.revert: Add test case.
- 💢
ci
Continuous integration related file modification. E.g.ci: Update workflows config.
- 🧯
build
Changes that affect the build system or external dependencies (example scopes: gulp, webpack, vite, npm)
<type>(<scope>): <short summary>
│ │ │
│ │ └─⫸ Summary in present tense. Not capitalized. No period at the end.
│ │
│ └─⫸ Commit Scope: animations|bazel|benchpress|common|compiler|compiler-cli|core|
│ elements|forms|http|language-service|localize|platform-browser|
│ platform-browser-dynamic|platform-server|router|service-worker|
│ upgrade|zone.js|packaging|changelog|docs-infra|migrations|ngcc|ve|
│ devtools....
│
└─⫸ Commit Type: build|ci|doc|docs|feat|fix|perf|refactor|test
website|chore|style|type|revert
token
A GITHUB_TOKEN with the ability to pull from the repo in question. This is required. Why do we needtoken
? Read more here: About the GITHUB_TOKEN secret. Default:${{ github.token }}
filter-author
Regular expression filtering author. Example:filter-author: (jaywcjlove|小弟调调™|dependabot\[bot\]|Renovate Bot)
filter
Regular expression filtering changelog. Example:filter: '[R|r]elease[d]\s+[v|V]\d(\.\d+){0,2}'
head-ref
The name of the head reference. Default${{github.sha}}
.base-ref
The name of the second branch. Defaults to thetag_name
of the latest GitHub release. This must be a GitHub release. Git tags or branches will not work.original-markdown
Defaulttrue
, Output clean markdown content.gh-pages
Defaultgh-pages
, Specify the branch name to get the hash frompath
Only commits containing this file path will be returned.template
Define the log display template (#111).show-emoji
Show emoji icons. Defaulttrue
.
changelog
Markdown formatted changelog.compareurl
Comparing two branches to see what’s changed or to start a new pull request.tag
Tag namev1.0.0
.version
The version number of the tag created. example:1.0.0
branch
Branch name.gh-pages-hash
Output to the latest hash of the specified branch. example:cc088c571f86fe222ff68f565
gh-pages-short-hash
Specify the branch name to get the short-hash from. example:cc088c5
Error: Not Found
If you are seeing this error its likely that you do not yet have a GitHub release. You might have a git tag and that shows up in the release tab. The API this Action uses only works with GitHub Releases. Convert one of your tags to a release and you'll be on your way. You can check out how this repository uses this action and GitHub releases for an example.
You can also set env.previous_tag
to ""
or the previous tag if it exists, and run the step conditionally. If there is no previous tag, the step will not run:
+- run: echo "previous_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo '')" >> $GITHUB_ENV
- name: Generate changelog
id: changelog
uses: jaywcjlove/changelog-generator@main
+ if: env.previous_tag
with:
token: ${{ secrets.GITHUB_TOKEN }}
- Create Tags From Auto create tags from commit or package.json.
- Github Action Contributors Github action generates dynamic image URL for contributor list to display it!
- Create Coverage Badges Create coverage badges from coverage reports. (no 3rd parties servers)
- Generated Badges Create a badge using GitHub Actions and GitHub Workflow CPU time (no 3rd parties servers)
- @conventional-changelog/conventional-changelog.
- @homeday-de/github-action-changelog-generator.
- @jessicalostinspace/commit.
- @metcalfc/changelog-generator.
- uiwjs/react-md-editor
- uiwjs/react-code-preview
- uiwjs/react-amap
- uiwjs/react-heat-map
- More Examples...
As always, thanks to our amazing contributors!
Made with action-contributors.
The scripts and documentation in this project are released under the MIT License