Github action to create git tag and Github release on merge.
on:
push:
branches:
- main
jobs:
release-on-merge:
runs-on: ubuntu-latest
permissions:
contents: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: dexwritescode/release-on-merge-action@v1The only permissions needed for GITHUB_TOKEN to create tags and releases is contents: write.
Optional The version number to increment. Default patch.
It can be one of: major, minor, patch, norelease
version-increment-strategy: majorOptional If no previous release is found in the repo, the action will create the first release using this version. Default 0.1.0.
initial-version: '1.2.3'Optional Git tag prefix. Example the v in v1.2.3. Default v.
tag-prefix: vOptional Body text to prepend to the auto-generated release notes.
body: 'Body text...'Optional Whether to auto-generate Github release notes. Default true.
generate-release-notes: trueOptional Log the version that would be created without actually creating the release. Default false.
dry-run: trueOptional GitHub API host. Override for GitHub Enterprise Server. Default https://api.github.com.
github-host: 'https://github.example.com/api/v3'Optional Create a pre-release instead of a stable release. The version will include a pre-release identifier and an auto-incrementing counter (e.g. v1.2.0-rc.1, v1.2.0-rc.2). Default false.
prerelease: trueWhen prerelease: true:
- If the latest release already has the same identifier, the counter is incremented (
v1.2.0-rc.1→v1.2.0-rc.2). - Otherwise,
version-increment-strategyis applied to the base version and the counter starts at.1.
Optional The identifier to append when prerelease: true. Default rc.
prerelease-identifier: betaProduces tags like v1.2.0-beta.1, v1.2.0-beta.2, etc.
Optional Derive the increment strategy from the merged PR's labels instead of version-increment-strategy. If no matching label is found, falls back to version-increment-strategy. Default false.
use-label-strategy: trueDefault label names (all configurable — see below):
| Label | Strategy |
|---|---|
release:major |
major |
release:minor |
minor |
release:patch |
patch |
release:skip |
norelease (no release created) |
Optional PR label that triggers a major version bump. Default release:major.
label-major: 'bump:major'Optional PR label that triggers a minor version bump. Default release:minor.
label-minor: 'bump:minor'Optional PR label that triggers a patch version bump. Default release:patch.
label-patch: 'bump:patch'Optional PR label that skips release creation. Default release:skip.
label-skip: 'bump:skip'The version number that was created (without prefix), e.g. 1.2.3 or 1.2.3-rc.1.
The full tag that was created (with prefix), e.g. v1.2.3 or v1.2.3-rc.1.
- uses: dexwritescode/release-on-merge-action@v1
id: release
- run: echo "Created ${{ steps.release.outputs.tag }}"on:
push:
branches:
- main
jobs:
release-on-merge:
runs-on: ubuntu-latest
permissions:
contents: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: dexwritescode/release-on-merge-action@v1
with:
use-label-strategy: trueLabel your PRs with release:major, release:minor, release:patch, or release:skip to control the release type per merge.
- uses: dexwritescode/release-on-merge-action@v1
with:
prerelease: true
prerelease-identifier: betaThis action uses release-on-merge-action-source
This Github Action is licensed under MIT license.