This GitHub Action automatically determinate the next release version to use based on all the Conventional Commits since the latest tag.
Works great alongside the Changelog from Conventional Commits action!
name: Deploy
on:
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Get Next Version
id: semver
uses: ietf-tools/semver-action@v1
with:
token: ${{ github.token }}
branch: main
- name: Create Release
uses: ncipollo/[email protected]
with:
allowUpdates: true
draft: false
makeLatest: true
name: ${{ steps.semver.outputs.next }}
body: Changelog Contents
token: ${{ github.token }}
Field | Description | Required | Default |
---|---|---|---|
token |
Your GitHub token. (e.g. ${{ github.token }} ) |
✅ | |
branch |
The branch to use when fetching list of commits to compare against. (e.g. main ) |
❌ | main |
majorList |
Comma separated commit prefixes, used to bump Major version. A BREAKING CHANGE note in a commit message will still cause a major bump. |
❌ | |
minorList |
Comma separated commit prefixes, used to bump Minor version. | ❌ | feat, feature |
patchList |
Comma separated commit prefixes, used to bump Patch version. | ❌ | fix, bugfix, perf, refactor, test, tests |
patchAll |
If set to true , will ignore patchList and always count commits as a Patch. |
❌ | false |
skipInvalidTags |
If set to true , will skip tags that are not valid semver until it finds a proper one (up to maxTagsFetch from latest). |
❌ | false |
noVersionBumpBehavior |
Whether to exit with an error (default), a warning, silently, the current version or force bump using patch when none of the commits result in a version bump. (Possible values: error , warn , current , patch or silent ) |
❌ | error |
noNewCommitBehavior |
Whether to exit with an error (default), a warning, the current version or silently when there are no new commits since the latest tag. (Possible values: error , warn , current or silent ) |
❌ | error |
prefix |
A prefix that will be striped when parsing tags (e.g. foobar/ ). Any other prefix will be ignored. Useful for monorepos. The prefix will be added back to the output values. |
❌ | |
additionalCommits |
A list of additional commit messages to parse in order to calculate semver. | ❌ | |
fromTag |
Override the tag to use when comparing against the branch in order to fetch the list of commits. | ❌ | |
maxTagsToFetch |
Maximum number of tags to fetch from latest. | ❌ | 10 |
Field | Description | Example Value |
---|---|---|
current |
Current version number / latest tag. | v1.1.9 |
next |
Next version number in format v0.0.0 |
v1.2.0 |
nextStrict |
Next version number without the v prefix. |
1.2.0 |
nextMajor |
Next version major number in format v0 |
v1 |
nextMajorStrict |
Next version major number only. | 1 |
bump |
Next version behavior: major , major , major or none . |
minor |
You must already have an existing tag in your repository. The job will exit with an error if it can't find the latest tag to compare against!