• Stars
    star
    204
  • Rank 192,024 (Top 4 %)
  • Language
  • License
    MIT License
  • Created almost 4 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

:octocat: Github action to retrieve branch or tag names with support for all events.

branch-names

Ubuntu Mac OS Windows Public workflows that use this action.

Codacy Badge CI Update release version.

All Contributors

Get a branch or tag name without the /ref/* prefix.

Features

  • Retrieve the current branch name without any prefix. (e.g. 'refs/heads/main' -> 'main')
  • Retrieve the current tag with an option to strip the prefix (e.g. v0.0.1 -> v -> 0.0.1)
  • Detect actions triggered by non default branches
  • Detect actions triggered by the default branch
  • Supports all valid git branch names

Usage

...

    steps:
      - name: Get branch name
        id: branch-name
        uses: tj-actions/branch-names@v7
        
      - name: Running on the default branch.
        if: steps.branch-name.outputs.is_default == 'true'
        run: |
          echo "Running on default: ${{ steps.branch-name.outputs.current_branch }}" 
        # Outputs: "Running on default: main"
      
      - name: Running on a pull request branch.
        if: steps.branch-name.outputs.is_default == 'false'
        run: |
          echo "Running on pr: ${{ steps.branch-name.outputs.current_branch }}"
        # Outputs: "Running on pr: feature/test"
      
      - name: Running on a pull request branch.
        if: steps.branch-name.outputs.is_default == 'false'
        run: |
          echo "Base branch: ${{ steps.branch-name.outputs.base_ref_branch }}"
        # Outputs: "Base branch: main"
        
      - name: Running on any event
        run: |
          echo "Default branch: ${{ steps.branch-name.outputs.default_branch }}"
        # Outputs: "Default branch: main"

If you feel generous and want to show some extra appreciation:

Support this project with a ⭐

Buy me a coffee

Outputs

OUTPUT TYPE DESCRIPTION
base_ref_branch string The target branch of a
pull request or tag e.g
main
current_branch string The current branch name regardless
of event_type e.g main, feature/test
default_branch string The default branch name e.g
main OR master
head_ref_branch string The source branch of a
pull request e.g feature/test
is_default string Returns "true" if the current
branch is the default else
"false".
is_tag string Returns "true" if the current
branch is a tag else
"false".
ref_branch string The branch that triggered the
workflow run. e.g 1/merge, main
tag string The tag that triggered the
workflow run. e.g v0.0.1, 0.0.1

Inputs

INPUT TYPE REQUIRED DEFAULT DESCRIPTION
strip_tag_prefix string false The prefix that should be
stripped from the tag e.g
v -> with a tag
v0.0.1 -> returns 0.0.1

Events

  • push*
on:
  push:
    branches:
      - main

...
    steps:
      - name: Get branch names
        id: branch-name
        uses: tj-actions/branch-names@v7

      - name: Current branch name
        run: |
          echo "${{ steps.branch-name.outputs.current_branch }}"
        # Outputs: "main" the branch that triggered the push event.

      - name: Running on the default branch.
        if: steps.branch-name.outputs.is_default == 'true'
        run: |
          echo "Running on default: ${{ steps.branch-name.outputs.current_branch }}"
        # Outputs: "Running on default: main".
      
      - name: Running on the default branch (i.e non tag based 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: Get Ref brach name
        run: |
          echo "${{ steps.branch-name.outputs.ref_branch }}"
        #  Outputs: "main"
      
      - name: Default branch name
        run: |
          echo "${{ steps.branch-name.outputs.default_branch }}"
        # Outputs: "main" the default branch.
  • pull_request*
on:
  pull_request:
    branches:
      - main

...
    steps:
      - name: Get branch names
        id: branch-name
        uses: tj-actions/branch-names@v7
      
      - name: Current branch name
        run: |
          echo "${{ steps.branch-name.outputs.current_branch }}"
        # Outputs: "feature/test" current PR branch.

      - name: Running on a non tag based branch and a PR branch.
        if: 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: Running on a pull request (i.e non tag based 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: Get Ref branch name
        run: |
          echo "${{ steps.branch-name.outputs.ref_branch }}"
        #  Outputs: "1/merge"

      - name: Get Head Ref branch name (i.e The current pull request branch)
        run: |
          echo "${{ steps.branch-name.outputs.head_ref_branch }}"
        # Outputs: "feature/test" current PR branch.

      - name: Get Base Ref branch name (i.e The target of a pull request.)
        run: |
          echo "${{ steps.branch-name.outputs.base_ref_branch }}"
        # Outputs: "main".
      
      - name: Default branch name
        run: |
          echo "${{ steps.branch-name.outputs.default_branch }}"
        # Outputs: "main" the default branch.
  • tag*
on:
  push:
    tags:
      - '*'

...
    steps:
      - name: Get branch names
        id: branch-name
        uses: tj-actions/branch-names@v7
     
      - name: Running on a tag branch.
        if: steps.branch-name.outputs.is_tag == 'true'
        run: |
          echo "Running on: ${{ steps.branch-name.outputs.tag }}"
        # Outputs: "Running on: v0.0.1".
        
      - name: Get the current tag
        if: steps.branch-name.outputs.is_tag == 'true'  # Replaces: startsWith(github.ref, 'refs/tags/')
        run: |
          echo "${{ steps.branch-name.outputs.tag }}"
        # Outputs: "v0.0.1" OR "0.0.1"

Possible usage with actions/checkout:

on:
  pull_request:
    branches:
      - develop
    
 jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Get branch names.
        id: branch-names
        uses: tj-actions/branch-names@v7
      - uses: actions/checkout@v3
        with:
          ref: ${{ steps.branch-names.outputs.head_ref_branch }}

Credits

This package was created with Cookiecutter.

Report Bugs

Report bugs at https://github.com/tj-actions/branch-names/issues.

If you are reporting a bug, please include:

  • Your operating system name and version.
  • Any details about your workflow that might be helpful in troubleshooting.
  • Detailed steps to reproduce the bug.

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Alejandro Loarca

πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

More Repositories

1

changed-files

:octocat: Github action to retrieve all (added, copied, modified, deleted, renamed, type changed, unmerged, unknown) files and directories.
TypeScript
1,646
star
2

verify-changed-files

:octocat: Github action to verify file changes that occur during the workflow execution.
Shell
152
star
3

eslint-changed-files

:octocat: Github action to run ESLint on changed pull request files with support for reporting errors via Github checks.
Shell
81
star
4

coverage-badge-go

:octocat: Generate coverage badge for go modules
Go
68
star
5

coverage-badge-py

:octocat: Github action to generate coverage badge without uploading results to a 3rd party.
Python
55
star
6

pg-dump

:octocat: Github action to generate backup of a postgres database.
Shell
42
star
7

auto-doc

:octocat: Github action that turns your reusable workflows and custom actions into easy to read markdown tables.
Go
37
star
8

puppeteer

:octocat: Github action to run test using Puppeteer, the headless chrome Node API
JavaScript
15
star
9

pg-restore

:octocat: Github action to restore a postgres database from a backup script.
10
star
10

git-cliff

:octocat: Github action to run git-cliff with a custom cliff.toml
Shell
8
star
11

docker-run

:octocat: GitHub action to run steps using docker
Dockerfile
7
star
12

depcheck

:octocat: Github action to validate unused node project dependencies.
Shell
7
star
13

github-changelog-generator

:octocat: Github action to generate CHANGELOG/HISTORY.md
Dockerfile
6
star
14

cargo-bump

:octocat: Github action that bumps the current version in your Cargo.toml
Rust
6
star
15

cookiecutter-action

:octocat: Cookiecutter for github actions
Dockerfile
5
star
16

coverage-reporter

:octocat: Github action to report code coverage for coverage.py, mocha, jest, etc.
TypeScript
5
star
17

renovate-config-validator

:octocat: Github action to validate renovate config
Dockerfile
5
star
18

aws-cdk

:octocat: Github action to run AWS CDK
Go
5
star
19

semver-diff

:octocat: Github action that compares versions based on the previous semantic version tag and the latest tag i.e (major, minor, patch, prerelease, build)
Shell
5
star
20

json2file

Simplifies the process of serializing JSON data to a file.
Rust
4
star
21

release-tagger

:octocat: Github action to manage action releases.
Shell
3
star
22

docker-cp

:octocat: Github action to run docker copy
Dockerfile
3
star
23

glob

:octocat: Github action to search for files matching glob patterns.
JavaScript
3
star
24

sync-release-version

:octocat: Github action to modify specific project files with an updated version of your project based on each release tag.
Shell
3
star
25

schemaspy

:octocat: Github action to document your database using https://schemaspy.org
Shell
3
star
26

vercel-wait

:octocat: Github action to wait for Vercel's automated deploys to enable triggering any dependent workflows.
Shell
3
star
27

gql-inspector

:octocat: Github action to compare GraphQL schemas, find breaking changes, find similar types.
TypeScript
2
star
28

remark

:octocat: Github action markdown processor https://github.com/remarkjs/remark
2
star
29

.github

tj-actions
2
star
30

coverage-badge-js

:octocat: Github action to generate coverage reports
TypeScript
2
star
31

bandit

:octocat: Github action to run PyCQA's bandit security linter.
Dockerfile
2
star
32

check-manifest

:octocat: Github action to detect any issues with your MANIFEST.in file used for distributing python packages
Python
2
star
33

checkly-trigger

:octocat: Github action to execute Checkly checks on-demand as part of your CI/CD pipeline or end-to-end tests
Shell
2
star
34

install-postgresql

:octocat: Github action to install PostgreSQL
Shell
2
star
35

demo

Submodule repo for changed-files action
1
star
36

tj-actions.github.io

tj-actions website
Vue
1
star
37

docker-action

A template to demonstrate how to build a Docker action.
Dockerfile
1
star
38

demo3

Demo repo with multiple commits to verify fork PR's for the changed-files action
Python
1
star
39

setup-bin

:octocat: Github action to download and install release artifacts for Golang and Rust
Shell
1
star
40

demo2

Demo repo with a single commit for the changed-files action
1
star
41

homebrew-tap

Homebrew tap
Ruby
1
star
42

find-changed-files

A github action to verify changed files.
Shell
1
star