Simple (docker-based) GitHub action that can be used to create/update a tag and push it to the remote.
[!NOTE]\ Since this is a docker-based action and GitHub currently only supports Linux-based containers running this action on Windows and Mac now needs to be supported (see #26).
tag
Required. Tag you want to create.
message
Optional. Tag message. Default: Release $TAG
.
force_push_tag
Optional. Push tag even if it already exists on the remote. Default: false
. Please use with care!
tag_exists_error
Optional. Whether to throw an error when the tag already exists. Default: true
. Ignored when force_push_tag
is true
.
no_verify_tag
Optional. Skips verifying when pushing the tag. Default: false
. Please use with care!
commit_sha
Optional. Specify the commit SHA hash for tagging. By default, it utilizes the GITHUB_SHA
environment variable, which typically represents the latest commit SHA hash. However, its value ultimately depends on the trigger event of the workflow. For additional details, consult the GitHub Actions documentation.
github_token
Optional. It's no need to specify it if you use checkout@v2. Required for checkout@v1 action.
gpg_private_key
Optional. Specifies the GPG private key to sign the tag with. Default: ""
.
gpg_passphrase
Optional. Specifies the GPG passphrase to sign the tag with. Default: ""
.
tag_exists
A boolean specifying whether the tag already exists.
TAG_EXISTS
A boolean specifying whether the tag already exists.
name: Create/update tag
on:
push:
branch: "main"
jobs:
create-tag:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: rickstaa/action-create-tag@v1
id: "tag_create"
with:
tag: "latest"
tag_exists_error: false
message: "Latest release"
# Print result using the env variable.
- run: |
echo "Tag already present: ${{ env.TAG_EXISTS }}"
# Print result using the action output.
- run: |
echo "Tag already present: ${{ steps.tag_create.outputs.tag_exists }}"
To sign tags with GPG, follow these steps:
First, generate a GPG key. Once generated, export the GPG private key in ASCII armored format to your clipboard using one of the following commands based on your operating system:
macOS:
gpg --armor --export-secret-key joe@foo.bar | pbcopy
Ubuntu (GNU base64):
gpg --armor --export-secret-key joe@foo.bar -w0 | xclip -selection clipboard
Arch:
gpg --armor --export-secret-key joe@foo.bar | xclip -selection clipboard -i
FreeBSD (BSD base64):
gpg --armor --export-s[.github/workflows/update_semver.yml](.github/workflows/update_semver.yml)e your GPG passphrase.
Modify your workflow YAML file to include the GPG private key and passphrase in the gpg_private_key
and gpg_passphrase
inputs:
name: Create/update tag
on:
push:
branch: "main"
jobs:
create-tag:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: rickstaa/action-create-tag@v1
id: "tag_create"
with:
tag: "latest"
tag_exists_error: false
message: "Latest release"
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg_passphrase: ${{ secrets.PASSPHRASE }}
# Print result using the env variable.
- run: |
echo "Tag already present: ${{ env.TAG_EXISTS }}"
# Print result using the action output.
- run: |
echo "Tag already present: ${{ steps.tag_create.outputs.tag_exists }}"
This workflow will now sign tags using the specified GPG key during tag creation.
Feel free to open an issue if you have ideas on how to make this GitHub action better or if you want to report a bug! All contributions are welcome. :rocket: Please consult the contribution guidelines for more information.