diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 127dbf7..02bb08f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,49 +28,53 @@ jobs: echo "Ref: ${{ steps.branch-name.outputs.ref_branch }}" echo "Is Default: ${{ steps.branch-name.outputs.is_default }}" echo "Current tag: ${{ steps.branch-name.outputs.tag }}" - - name: Check is_default for pull request - if: github.event_name == 'pull_request' && !startsWith(github.ref, 'refs/tags/') && steps.branch-name.outputs.is_default != 'false' + - name: Test is_default output for pull request + if: github.event_name == 'pull_request' && steps.branch-name.outputs.is_tag == 'false' && 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' && !startsWith(github.ref, 'refs/tags/') && steps.branch-name.outputs.is_default != 'true' + - name: Test is_default output for non pull request + if: github.event_name != 'pull_request' && steps.branch-name.outputs.is_tag == 'false' && 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' && !startsWith(github.ref, 'refs/tags/') && !steps.branch-name.outputs.base_ref_branch + - name: Test base_ref_branch output + if: github.event_name == 'pull_request' && steps.branch-name.outputs.is_tag == 'false' && !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' && !startsWith(github.ref, 'refs/tags/') && !steps.branch-name.outputs.head_ref_branch + - name: Test head_ref output + if: github.event_name == 'pull_request' && steps.branch-name.outputs.is_tag == 'false' && !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 && !startsWith(github.ref, 'refs/tags/') " + - name: Test ref_branch output + if: "!steps.branch-name.outputs.ref_branch && steps.branch-name.outputs.is_tag == 'false'" 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' && !startsWith(github.ref, 'refs/tags/') && !steps.branch-name.outputs.current_branch + - name: Test current_branch output for pull_request event. + if: github.event_name == 'pull_request' && steps.branch-name.outputs.is_tag == 'false' && !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' && !startsWith(github.ref, 'refs/tags/') && !steps.branch-name.outputs.current_branch + - name: Test current_branch output for push event. + if: github.event_name == 'push' && steps.branch-name.outputs.is_tag == 'false' && !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 tag based push event. - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && !steps.branch-name.outputs.current_branch + - name: Test current_branch output for tag based push event. + if: github.event_name == 'push' && steps.branch-name.outputs.is_tag == 'true' && !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 + - name: Test is_tag output for tag based push event. + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') == 'true' + run: | + echo "Current branch unset: ${{ steps.branch-name.outputs.current_branch }}" + exit 1 + - name: Test tag output for tag based push event. + if: github.event_name == 'push' && steps.branch-name.outputs.is_tag == 'true' && !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 34185ff..6ce0e5c 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,12 @@ Get branch or tag information without the `/ref/*` prefix | Output | type | Example | Description | |:--------------------:|:------------:|:---------------------------:|:-----------------------------------------------------------------:| | is_default | `boolean` | `true` *OR* `false` | Detects wheter the action is running on a default branch | +| is_tag | `boolean` | `true` *OR* `false` | Detects wheter the action is running on a tag branch | | current_branch | `string` | `main` *OR* `feature/test` | Always returns a valid branch name for a triggered workflow run. | | 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 | +| tag | `string` | `v0.0.1` *OR* `0.0.1` | The tag that triggered the workflow run | ## Inputs @@ -28,7 +29,6 @@ Get branch or tag information without the `/ref/*` prefix ```yaml ... steps: - - uses: actions/checkout@v2 - name: Get branch names id: branch-name uses: tj-actions/branch-names@v4.2 @@ -39,11 +39,10 @@ Get branch or tag information without the `/ref/*` prefix ```yaml ... steps: - - uses: actions/checkout@v2 - name: Get branch names id: branch-name uses: tj-actions/branch-names@v4.2 - + - name: Running on the default branch. if: steps.branch-name.outputs.is_default == 'true' run: | @@ -55,6 +54,24 @@ Get branch or tag information without the `/ref/*` prefix run: | echo "Running on pr: ${{ steps.branch-name.outputs.current_branch }}" # Outputs: "Running on pr: feature/test". + + - name: Running on a tag branch. + if: steps.branch-name.outputs.is_tag == 'true' + run: | + echo "Running on tag: ${{ steps.branch-name.outputs.tag }}" + # Outputs: "Running on tag: v0.0.1". + + - name: Running on a non tag based branch and the default branch. + if: steps.branch-name.outputs.is_tag == 'false' && steps.branch-name.outputs.is_default == 'true' + run: | + echo "Running on branch: ${{ steps.branch-name.outputs.current_branch }}" + # Outputs: "Running on branch: main". + + - name: Running on a non tag based branch and a PR branch. + if: steps.branch-name.outputs.is_tag == 'false' && steps.branch-name.outputs.is_default == 'false' + run: | + echo "Running on branch: ${{ steps.branch-name.outputs.current_branch }}" + # Outputs: "Running on branch: feature/test". - name: Current branch name if: github.event_name == 'pull_request' @@ -114,6 +131,8 @@ on: ``` + + * Free software: [MIT license](LICENSE) diff --git a/action.yml b/action.yml index 0fb5842..8b43fca 100644 --- a/action.yml +++ b/action.yml @@ -11,6 +11,9 @@ outputs: is_default: value: ${{ steps.default.outputs.is_default }} description: 'Returns "true" if the current branch is the default else "false".' + is_tag: + value: ${{ steps.tag.outputs.is_tag }} + description: 'Returns "true" if the current branch is a tag else "false".' current_branch: value: ${{ steps.current_branch.outputs.current_branch }} description: 'Returns the value of the current branch which is consistent regardless of event_type: i.e (push, pull_requests).' @@ -72,6 +75,9 @@ runs: REF=${{ github.ref }} TAG=${REF/refs\/tags\/${{ inputs.strip_tag_prefix }}/} echo "::set-output name=tag::$TAG" + echo "::set-output name=is_tag::true" + else + echo "::set-output name=is_tag::false" fi shell: bash