A Github Action to automatically bump and tag master, on merge, with the latest SemVer formatted version.
Medium Post: Creating A Github Action to Tag Commits
name: Bump version
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- name: Bump version and push tag
uses: anothrNick/github-tag-action@1.26.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WITH_V: trueNOTE: set the fetch-depth for actions/checkout@v2 to be sure you retrieve all commits to look for the semver commit message.
Environment Variables
- GITHUB_TOKEN (required) - Required for permission to tag the repo.
- DEFAULT_BUMP (optional) - Which type of bump to use when none explicitly provided (default:
minor). - WITH_V (optional) - Tag version with
vcharacter. - RELEASE_BRANCHES (optional) - Comma separated list of branches (bash reg exp accepted) that will generate the release tags. Other branches and pull-requests generate versions postfixed with the commit hash and do not generate any tag. Examples:
masteror.*orrelease.*,hotfix.*,master... - CUSTOM_TAG (optional) - Set a custom tag, useful when generating tag based on f.ex FROM image in a docker image. Setting this tag will invalidate any other settings set!
- SOURCE (optional) - Operate on a relative path under $GITHUB_WORKSPACE.
- DRY_RUN (optional) - Determine the next version without tagging the branch. The workflow can use the outputs
new_tagandtagin subsequent steps. Possible values aretrueandfalse(default). - INITIAL_VERSION (optional) - Set initial version before bump. Default
0.0.0. - TAG_CONTEXT (optional) - Set the context of the previous tag. Possible values are
repo(default) orbranch. - SUFFIX (optional) - Suffix appended to every generated tag (this fork always appends it),
masterby default. E.g.1.2.3-master. - VERBOSE (optional) - Print git logs. For some projects these logs may be very large. Possible values are
true(default) andfalse. - GIT_API_TAGGING (optional) - How to push the tag.
true(default) posts the tag via the GitHub refs API;falseusesgit push. Possible values aretrueandfalse. - TAG_MESSAGE (optional) - When set, creates an annotated tag (
git tag -a -m) instead of a lightweight one. Note: the annotation is only preserved whenGIT_API_TAGGINGisfalse; the refs API path pushes a lightweight tag. - MAJOR_STRING_TOKEN (optional) - Commit-message token that triggers a major bump. Default
#major. - MINOR_STRING_TOKEN (optional) - Commit-message token that triggers a minor bump. Default
#minor. - PATCH_STRING_TOKEN (optional) - Commit-message token that triggers a patch bump. Default
#patch. - NONE_STRING_TOKEN (optional) - Commit-message token that skips bumping. Default
#none. - BRANCH_HISTORY (optional) - Which commit messages are scanned for bump tokens:
compare(default, all commits since the last tag),last(only the latest commit), orfull(all commits sinceDEFAULT_BRANCH). - DEFAULT_BRANCH (optional) - Branch to diff against when
BRANCH_HISTORY=full. Falls back to$GITHUB_BASE_REF, then autodetection ofmaster/main.
- new_tag - The value of the newly created tag.
- tag - The value of the latest tag after running this action.
- part - The part of version which was bumped.
- old_tag - The previous tag before the bump.
Note: This action creates a lightweight tag.
Manual Bumping: Any commit message that includes #major, #minor, #patch, or #none will trigger the respective version bump. If two or more are present, the highest-ranking one will take precedence.
If #none is contained in the commit message, it will skip bumping regardless DEFAULT_BUMP.
Automatic Bumping: If no #major, #minor or #patch tag is contained in the commit messages, it will bump whichever DEFAULT_BUMP is set to (which is minor by default). Disable this by setting DEFAULT_BUMP to none.
Note: This action will not bump the tag if the
HEADcommit has already been tagged.
- Add this action to your repo
- Commit some changes
- Either push to master or open a PR
- On push (or merge), the action will:
- Get latest tag
- Bump tag with minor version unless any commit message contains
#majoror#patch - Pushes tag to github
- If triggered on your repo's default branch (
masterormainif unchanged), the bump version will be a release tag. - If triggered on any other branch, a prerelease will be generated, depending on the bump, starting with
*-<PRERELEASE_SUFFIX>.1,*-<PRERELEASE_SUFFIX>.2, ...
A list of projects using github-tag-action for reference.
-
another/github-tag-action (uses itself to create tags)
-
Access JSON structure with HTTP path parameters as keys/indices to the JSON.
