Simple GitHub action that can be used to check if a commit or branch contains a given tag.
Required. The tag you want to check. Also works with ${{ github.ref }}
if the workflow was triggered on a tag push.
Required. Branch or commit for which you want to check the tag existence.
Optional. Log action information to the console. By default true
.
Optional. Return an exit code of 1
when tag or reference does not exist. By default true
.
Boolean specifying whether the reference contained the tag.
The (trimmed) input tag that as used as a input.
The commit that is currently linked to the tag.
The reference that was used as a input.
name: Contains tag
on:
push:
branch: "main"
jobs:
create-tag:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: rickstaa/action-contains-tag@v1
id: contains_tag
with:
reference: "main"
tag: "Latest"
- run: |
if [[ ${{ steps.contains_tag.outputs.retval }} != 'true' ]]; then
echo "Branch/commit did contain the tag."
else
echo "Branch/commit did not contain the tag."
fi
I created this action since I wanted to combine the tag
and push
to branch filters. I send a feature request to the GitHub support. Until this feature is released, this action can be used as a temporary workaround. The recipe below ensures that a workflow is only triggered when a tag is pushed to the master branch.
name: Github tag test
on:
push:
tags:
- "v*.*.*"
jobs:
on-main-branch-check:
runs-on: ubuntu-latest
outputs:
on_main: ${{ steps.contains_tag.outputs.retval }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: rickstaa/action-contains-tag@v1
id: contains_tag
with:
reference: "main"
tag: "${{ github.ref }}"
tag-on-main-job:
runs-on: ubuntu-latest
needs: on-main-branch-check
if: ${{ needs.on-main-branch-check.outputs.on_main == 'true' }}
steps:
- run: echo "Tag was pushed to main."
- run: echo ${{needs.on-main-branch-check.outputs.on_main}}
tag-not-on-main-job:
runs-on: ubuntu-latest
needs: on-main-branch-check
if: ${{ needs.on-main-branch-check.outputs.on_main != 'true' }}
steps:
- run: echo "Tag was not pushed to main."
- run: echo ${{needs.on-main-branch-check.outputs.on_main}}
When use Checkout@v3, only a single commit is fetched by default. You must therefore set the right fetch_depth
in order to be able to access all the tags.
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. 🚀 Please consult the contribution guidelines for more information.