diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b32ac99..c66547d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,6 +2,8 @@ name: CI on: push: + tags: + - '*' branches: - main pull_request: @@ -19,6 +21,7 @@ jobs: id: branch-name uses: ./ - name: Show output + if: "!startsWith(github.ref, 'refs/tags/')" run: | echo "Current Branch: ${{ steps.branch-name.outputs.current_branch }}" echo "Base Ref: ${{ steps.branch-name.outputs.base_ref_branch }}" @@ -26,38 +29,43 @@ jobs: echo "Ref: ${{ steps.branch-name.outputs.ref_branch }}" echo "Is Default: ${{ steps.branch-name.outputs.is_default }}" - name: Check is_default for pull request - if: github.event_name == 'pull_request' && steps.branch-name.outputs.is_default != 'false' + if: github.event_name == 'pull_request' && !startsWith(github.ref, 'refs/tags/') && steps.branch-name.outputs.is_default != 'false' run: | echo "Is default is invalid: ${{ steps.branch-name.outputs.is_default }}" exit 1 - name: Check is_default for non pull request - if: github.event_name != 'pull_request' && steps.branch-name.outputs.is_default != 'true' + if: github.event_name != 'pull_request' && !startsWith(github.ref, 'refs/tags/') && steps.branch-name.outputs.is_default != 'true' run: | echo "Is default is invalid: ${{ steps.branch-name.outputs.is_default }}" exit 1 - name: Test base ref output - if: github.event_name == 'pull_request' && !steps.branch-name.outputs.base_ref_branch + if: github.event_name == 'pull_request' && !startsWith(github.ref, 'refs/tags/') && !steps.branch-name.outputs.base_ref_branch run: | echo "Base ref unset: ${{ steps.branch-name.outputs.base_ref_branch }}" exit 1 - name: Test head ref output - if: github.event_name == 'pull_request' && !steps.branch-name.outputs.head_ref_branch + if: github.event_name == 'pull_request' && !startsWith(github.ref, 'refs/tags/') && !steps.branch-name.outputs.head_ref_branch run: | echo "Head ref unset: ${{ steps.branch-name.outputs.head_ref_branch }}" exit 1 - name: Test ref output - if: "!steps.branch-name.outputs.ref_branch" + if: "!steps.branch-name.outputs.ref_branch && !startsWith(github.ref, 'refs/tags/') " run: | echo "Ref unset: ${{ steps.branch-name.outputs.ref_branch }}" exit 1 - name: Test current branch output for pull_request event. - if: github.event_name == 'pull_request' && !steps.branch-name.outputs.current_branch + if: github.event_name == 'pull_request' && !startsWith(github.ref, 'refs/tags/') && !steps.branch-name.outputs.current_branch run: | echo "Current branch unset: ${{ steps.branch-name.outputs.current_branch }}" exit 1 - name: Test current branch output for push event. - if: github.event_name == 'push' && !steps.branch-name.outputs.current_branch + if: github.event_name == 'push' && !startsWith(github.ref, 'refs/tags/') && !steps.branch-name.outputs.current_branch run: | echo "Current branch unset: ${{ steps.branch-name.outputs.current_branch }}" exit 1 + - name: Test current tag for push events. + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && !steps.branch-name.outputs.tag + run: | + echo "Current tag unset: ${{ steps.branch-name.outputs.tag }}" + exit 1 diff --git a/README.md b/README.md index eb50f3d..3cebccf 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Get branch information without the `/ref/*` prefix | base_ref_branch | `string` | `main` | The target branch of a pull request | | head_ref_branch | `string` | `feature/test` | The source branch of a pull request | | ref_branch | `string` | `1/merge` *OR* `main` | The branch that triggered the workflow run | +| tag | `string` | `v0.0.1` *OR* `0.0.1` | The tag that triggered the workflow run | ## Usage @@ -77,7 +78,12 @@ Get branch information without the `/ref/*` prefix run: | echo "${{ steps.branch-name.outputs.base_ref_branch }}" # Outputs: "main" for main <- PR branch. - + + - name: Get the current tag + if: startsWith(github.ref, 'refs/tags/') + run: | + echo "${{ steps.branch-name.outputs.tag }}" + # Outputs: "v0.0.1" OR "0.0.1" ``` diff --git a/action.yml b/action.yml index a2213f0..1218202 100644 --- a/action.yml +++ b/action.yml @@ -31,19 +31,24 @@ outputs: ref_branch: value: ${{ steps.branch.outputs.ref_branch }} description: 'The branch that triggered the workflow run.' + tag: + value: ${{ steps.branch.outputs.tag }} + description: 'The tag that triggered the workflow run.' runs: using: "composite" steps: - id: branch run: | - export BASE_REF=${{ inputs.base_ref }} - export HEAD_REF=${{ inputs.head_ref }} - export REF=${{ inputs.ref }} - echo "::set-output name=base_ref_branch::${BASE_REF/refs\/heads\//}" - echo "::set-output name=head_ref_branch::${HEAD_REF/refs\/heads\//}" - REF_BRANCH=${REF/refs\/pull\//} - echo "::set-output name=ref_branch::${REF_BRANCH/refs\/heads\//}" + if [[ !${{ startsWith(inputs.ref, 'refs/tags/') }} ]]; then + export BASE_REF=${{ inputs.base_ref }} + export HEAD_REF=${{ inputs.head_ref }} + export REF=${{ inputs.ref }} + echo "::set-output name=base_ref_branch::${BASE_REF/refs\/heads\//}" + echo "::set-output name=head_ref_branch::${HEAD_REF/refs\/heads\//}" + REF_BRANCH=${REF/refs\/pull\//} + echo "::set-output name=ref_branch::${REF_BRANCH/refs\/heads\//}" + fi shell: bash - id: current_branch run: | @@ -60,7 +65,15 @@ runs: else echo "::set-output name=is_default::false" fi - shell: bash + shell: bash + - id: tag + run: | + if [[ ${{ startsWith(inputs.ref, 'refs/tags/') }} ]]; then + export REF=${{ inputs.ref }} + TAG=${REF/refs\/tags\//} + echo "::set-output name=tag::$TAG" + fi + shell: bash branding: icon: git-branch