Getting current branch and commit hash in GitHub action

from Using environment variables

github provides two variables that are useful here, you'll need to process them a bit to get the values you desire:

GITHUB_SHA: The commit SHA that triggered the workflow. For example, ffac537e6cbbf934b08745a378932722df287a53.

GITHUB_REF: The branch or tag ref that triggered the workflow. For example, refs/heads/feature-branch-1. If neither a branch or tag is available for the event type, the variable will not exist.

The short values can be extracted like this:

git_hash=$(git rev-parse --short "$GITHUB_SHA")
git_branch=${GITHUB_REF#refs/heads/}

Another approach is to use github context.

- name: Create docker image
  run: ./docker-build.sh ${{ github.head_ref }}.${{ github.sha }}

The benefit of this approach is that you don't have to add a step to set the values. Note that it uses the full version of the sha (not the short version).


Simplest way to get a shortened SHA using Environment variables:

- name: Build Docker Image
    run: ./docker-build.sh alpha.${GITHUB_SHA::6}

A handy way to get the currrent branch and commit sha on the workflow could be getting it and saving on a "variable".

  - name: Declare some variables
    id: vars
    shell: bash
    run: |
      echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
      echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
  
  - name: Another step
    run: |
      echo "Branch: ${{ steps.vars.outputs.branch }}"
      echo "Sha: ${{ steps.vars.outputs.sha_short }}"

Maybe your docker-build.sh could receive the branch and sha as parameter, os the full version as parameter.

  - name: Create docker image
     run: ./docker-build.sh "${{ steps.vars.outputs.branch }}.${{ steps.vars.outputs.sha_short }}"

OR JUST

  - name: Create docker image
     run: ./docker-build.sh "${GITHUB_REF#refs/heads/}.${GITHUB_SHA}"

On this action you can see many tests I done to see what works, what don't.