Skip to content
tag

GitHub Action

Contains tag

v1.2.10 Latest version

Contains tag

tag

Contains tag

Check if branch of commit contains tag

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Contains tag

uses: rickstaa/action-contains-tag@v1.2.10

Learn more about this action in rickstaa/action-contains-tag

Choose a version

GitHub Action: Contains tag

Docker Image CI Code quality CI release GitHub release (latest SemVer)

Simple GitHub action that can be used to check if a commit or branch contains a given tag.

Inputs

tag

Required. The tag you want to check. Also works with ${{ github.ref }} if the workflow was triggered on a tag push.

reference

Required. Branch or commit for which you want to check the tag existence.

verbose

Optional. Log action information to the console. By default true.

frail

Optional. Return an exit code of 1 when tag or reference does not exist. By default true.

Outputs

retval

Boolean specifying whether the reference contained the tag.

tag

The (trimmed) input tag that as used as a input.

linked_commit

The commit that is currently linked to the tag.

reference

The reference that was used as a input.

Example usage

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

Use case

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}}

Limitations & Gotchas

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.

Contributing

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.