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
Note: We don't recommend using the @master version unless you're happy to test the latest changes.
# example 1: on push to master
name: Bump version
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: '0'
- name: Bump version and push tag
uses: anothrNick/github-tag-action@v1 # Don't use @master or @v1 unless you're happy to test the latest version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # if you don't want to set write permissions use a PAT token
# example 2: on merge to master from pull request (recommended)
name: Bump version
on:
pull_request:
types:
- closed
branches:
- master
jobs:
build:
if: github.event.pull_request.merged == true
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.merge_commit_sha }}
fetch-depth: '0'
- name: Bump version and push tag
uses: anothrNick/github-tag-action@v1 # Don't use @master or @v1 unless you're happy to test the latest version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # if you don't want to set write permissions use a PAT token
TAG_PREFIX: v
PRERELEASE: true
Depending if you choose example 1 or example 2 is how crafted version bumps operate when reading the commit log.
Is recommended to use on pull_request instead of on commit to master/main.
NOTE: set the fetch-depth for actions/checkout@v2 or newer to be sure you retrieve all commits to look for the semver commit message.
Environment Variables
minor).$GITHUB_BASE_REF). Strongly recommended to set this var if using anything else than master or main as default branch otherwise in combination with history full will error.v character. Replaced by TAG_PREFIXmaster or .* or release.*,hotfix.*,master ...new_tag and tag in subsequent steps. Possible values are true and false (default).false and true (default).0.0.0. MAKE SURE NOT TO USE vX.X.X here if combined TAG_PREFIXrepo (default) or branch.v to create v0.0.0. This takes precidance over WITH_Vfalse by default. Note this will be overwritten if using complex suffix release branches. Use it with checkout ref: ${{ github.sha }} for consistency see issue 266.beta by default. Note this will only be used if a prerelease branch.true (default) and false.#major commit message string tag.#minor commit message string tag.#patch commit message string tag.#none commit message string tag.#bumps. Possible values last, full and compare defaults to compare.
full: attempt to show all history, does not work on rebase and squash due missing HEAD [should be deprecated in v2 is breaking many workflows]last: show the single last commitcompare: show all commits since previous repo tag numberNote: 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 merge commit message, it will skip bumping regardless DEFAULT_BUMP.
Automatic Bumping: If no #major, #minor or #patch tag is contained in the merge commit message, 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.
#major or #patchmaster or main if unchanged), the bump version will be a release tag. see issue 266.*-<PRERELEASE_SUFFIX>.1, *-<PRERELEASE_SUFFIX>.2, ...See CONTRIBUTING.md and CODE_OF_CONDUCT.md.
Examples 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.
203 followers · starred Dec 2022
130 followers · starred Nov 2020
274 followers · starred Mar 2022
62 followers · starred Jul 2020
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
Note: We don't recommend using the @master version unless you're happy to test the latest changes.
# example 1: on push to master
name: Bump version
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: '0'
- name: Bump version and push tag
uses: anothrNick/github-tag-action@v1 # Don't use @master or @v1 unless you're happy to test the latest version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # if you don't want to set write permissions use a PAT token
# example 2: on merge to master from pull request (recommended)
name: Bump version
on:
pull_request:
types:
- closed
branches:
- master
jobs:
build:
if: github.event.pull_request.merged == true
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.merge_commit_sha }}
fetch-depth: '0'
- name: Bump version and push tag
uses: anothrNick/github-tag-action@v1 # Don't use @master or @v1 unless you're happy to test the latest version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # if you don't want to set write permissions use a PAT token
TAG_PREFIX: v
PRERELEASE: true
Depending if you choose example 1 or example 2 is how crafted version bumps operate when reading the commit log.
Is recommended to use on pull_request instead of on commit to master/main.
NOTE: set the fetch-depth for actions/checkout@v2 or newer to be sure you retrieve all commits to look for the semver commit message.
Environment Variables
minor).$GITHUB_BASE_REF). Strongly recommended to set this var if using anything else than master or main as default branch otherwise in combination with history full will error.v character. Replaced by TAG_PREFIXmaster or .* or release.*,hotfix.*,master ...new_tag and tag in subsequent steps. Possible values are true and false (default).false and true (default).0.0.0. MAKE SURE NOT TO USE vX.X.X here if combined TAG_PREFIXrepo (default) or branch.v to create v0.0.0. This takes precidance over WITH_Vfalse by default. Note this will be overwritten if using complex suffix release branches. Use it with checkout ref: ${{ github.sha }} for consistency see issue 266.beta by default. Note this will only be used if a prerelease branch.true (default) and false.#major commit message string tag.#minor commit message string tag.#patch commit message string tag.#none commit message string tag.#bumps. Possible values last, full and compare defaults to compare.
full: attempt to show all history, does not work on rebase and squash due missing HEAD [should be deprecated in v2 is breaking many workflows]last: show the single last commitcompare: show all commits since previous repo tag numberNote: 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 merge commit message, it will skip bumping regardless DEFAULT_BUMP.
Automatic Bumping: If no #major, #minor or #patch tag is contained in the merge commit message, 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.
#major or #patchmaster or main if unchanged), the bump version will be a release tag. see issue 266.*-<PRERELEASE_SUFFIX>.1, *-<PRERELEASE_SUFFIX>.2, ...See CONTRIBUTING.md and CODE_OF_CONDUCT.md.
Examples 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.
203 followers · starred Dec 2022
130 followers · starred Nov 2020
274 followers · starred Mar 2022
62 followers · starred Jul 2020