How to get current branch within github actions

前端 未结 13 2066
-上瘾入骨i
-上瘾入骨i 2020-11-29 20:11

I\'m building docker images with Github Actions and want to tags images with branch name, I found only GITHUB_REF variable, but it results in refs/heads/f

相关标签:
13条回答
  • 2020-11-29 20:42

    Use branch name on GitHub actions

    Convenience action for using current branch name. Usage

    name: build
    on: push
    
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v1
        - run: npm ci
        - uses: nelonoel/branch-name@v1
        # Use branch name for whatever purpose
        - run: echo ${BRANCH_NAME}
    
    0 讨论(0)
  • 2020-11-29 20:45

    You could use https://github.com/rlespinasse/github-slug-action

    - name: Inject slug/short variables
      uses: rlespinasse/github-slug-action@v2.x
    
    - name: Print slug/short variables
      run: |
        echo "Slug variables"
        echo " - ${{ env.GITHUB_REF_SLUG }}"    
        echo " - ${{ env.GITHUB_HEAD_REF_SLUG }}"
        echo " - ${{ env.GITHUB_BASE_REF_SLUG }}"
        echo " - ${{ env.GITHUB_REPOSITORY_SLUG }}"
        // output e.g. : master feat-new-feature v1.0.0 product-1.0.0-rc.2 new-awesome-product
        echo "Slug URL variables"
        echo " - ${{ env.GITHUB_REF_SLUG_URL }}"
        echo " - ${{ env.GITHUB_HEAD_REF_SLUG_URL }}"
        echo " - ${{ env.GITHUB_BASE_REF_SLUG_URL }}"
        echo " - ${{ env.GITHUB_REPOSITORY_SLUG_URL }}"
        // output e.g. : master feat-new-feature v1-0-0 product-1-0-0-rc-2 new-awesome-product
        echo "Short SHA variables"
        echo " - ${{ env.GITHUB_SHA_SHORT }}"
        // output e.g. : ffac537e
    
    0 讨论(0)
  • 2020-11-29 20:51

    I just made a simple test within GitHub Actions using a bash script:

    #!/bin/bash
    
    echo Reserved for REPO_NAME=${GITHUB_REPOSITORY##*/}
    echo GITHUB_REF=${GITHUB_REF}
    echo EXTRACT_GITHUB_REF=${GITHUB_REF##*/}
    echo EXTRACT_GITHUB_REF_HEADS=$(echo ${GITHUB_REF#refs/heads/})
    
    cd $REPO_NAME
    git checkout ${GITHUB_REF##*/}
    git checkout $(echo ${GITHUB_REF#refs/heads/})
    

    Here is screenshot of the output:

    So both ${GITHUB_REF##*/} and $(echo ${GITHUB_REF#refs/heads/}) are correct

    0 讨论(0)
  • 2020-11-29 20:52

    Running on Windows?. Windows default command is a PowerShell terminal.

      - name: SET CURRENT_BRANCH
        run: |
          $branchName = "${{github.ref}}".Split("/")["${{github.ref}}".Split("/").Length -1]
          echo "::set-env name=CURRENT_BRANCH::$(echo $branchName)"
    
    0 讨论(0)
  • 2020-11-29 20:58

    I added a separate step for extracting branch name from $GITHUB_REF and set it to the step output

    - name: Extract branch name
      shell: bash
      run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
      id: extract_branch
    

    after that, I can use it in the next steps with

    - name: Push to ECR
      id: ecr
      uses: jwalton/gh-ecr-push@master
      with:
        access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
        secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        region: us-west-2
        image: eng:${{ steps.extract_branch.outputs.branch }}
    
    0 讨论(0)
  • 2020-11-29 21:00

    The GitHub Action FranzDiebold/github-env-vars-action exposes several useful environment variables, such as current branch name and their slug values. I made this action exactly for this use case.

    Usage

    steps:
      - uses: FranzDiebold/github-env-vars-action@v1.2.0
      - name: Print environment variables
        run: |
          echo "GITHUB_REPOSITORY_SLUG=$GITHUB_REPOSITORY_SLUG"
          echo "GITHUB_REPOSITORY_OWNER=$GITHUB_REPOSITORY_OWNER"
          echo "GITHUB_REPOSITORY_OWNER_SLUG=$GITHUB_REPOSITORY_OWNER_SLUG"
          echo "GITHUB_REPOSITORY_NAME=$GITHUB_REPOSITORY_NAME"
          echo "GITHUB_REPOSITORY_NAME_SLUG=$GITHUB_REPOSITORY_NAME_SLUG"
          echo "GITHUB_REF_SLUG=$GITHUB_REF_SLUG"
          echo "GITHUB_REF_NAME=$GITHUB_REF_NAME"
          echo "GITHUB_REF_NAME_SLUG=$GITHUB_REF_NAME_SLUG"
          echo "GITHUB_SHA_SHORT=$GITHUB_SHA_SHORT"
    

    A demo for all Operating systems (Linux, macOS and Windows) is also available in the demo workflows file of the repository!

    0 讨论(0)
提交回复
热议问题