GitHub Action
Contains tag
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.