GitHub Action versioning
ActionsTags
(2)Lightweight composite github action managing vX and vX.Y tags for a github action.
Designed to act upon created or edited github releases, action will create or override vX and vX.Y tags based on the provided tag.
Note
Action will also override the original tag (reference and the message stay as is though), in order to keep it as latest tag !
Otherwise, when creating a new github releases with an automatically generated changelog, vX or vX.Y tag will be picked as previous tag rather than the expected previous vX.Y.Z tag.
Important
- Do not forget to set
contents: writepermission ! - When action is used with another event than release creation (or edition), you must fill the
taginput !
name: Publish
on:
release:
types: [published, edited]
jobs:
tag:
name: Publish vX and vX.Y tags
runs-on: ubuntu-latest
if: ${{ github.event.release.prerelease == false && github.event.release.draft == false }}
permissions:
contents: write # Required to manage tags & releases !
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Generate vX and vX.Y tags
uses: yoanm/gha-versioning@v1Tip
The repository uses the action too, therefore a vX and a vX.Y tag are automatically created for each release !
If you want to make vX and/or vX.Y versions available on the marketplace, follow this procedure:
-
Use
update-inner-releasesattruewhen using the action- name: Generate vX and vX.Y tags uses: yoanm/gha-versioning@v1 with: update-inner-releases: true
-
Wait for the related tag (
vXorvX.Y) to be created by this action. -
Manually create the releases targeting the tag (
vXorvX.Yor both, up to you) and publish it to the marketplace.
Then continue creating vX.Y.Z releases as usual, related existing vX and vX.Y releases will be automatically updated to reflect the actual vX.Y.Z version.
-
tag: Default to${{ github.event.release.tag_name }}The full tag used to generate vX and vX.Y tags
-
update-inner-releases: Default tofalse.Whether to also update releases name linked to
vXandvX.Ytags and set them as latest if provided tag release is currently the latest release.[!IMPORTANT] Will work only on pre-existing releases !
-
inner-releases-as-latest: Default toauto.Whether to set inner releases as latest.
[!IMPORTANT] Requires
update-inner-releasesattrue!auto: Will be set only if releases linked to providedtagis the latesttrue: Set them as latest whatever if providedtagrelease is the latest or notfalse: Do not set them as latest
-
git-email: Default togithub-actions[bot]@users.noreply.github.com.Git user email is required when creating tag with a message.
-
git-name: Default togithub-actions[bot].Git user name is required when creating tag with a message.
-
working-directory: Default to${{ github.workspace }}.Directory to the Git repository to tag.
minor-tag: Minor tag created (e.g.vX.Y)major-tag: Major tag created (e.g.vX)
Resources
GitHub Action versioning is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.