name: "Git tag decribe action" author: m.shein@reglab.ru description: "Retrive current tag position " outputs: git_tag_desc: description: "" value: ${{ steps.extract_git_info.outputs.GIT_TAG_DESC }} git_branch_name: description: "" value: ${{ steps.extract_git_info.outputs.GIT_BRANCH_NAME }} git_branch_formatted: description: "Normalized branch name (xx.xx.xx): true or false" value: ${{ steps.extract_git_info.outputs.GIT_BRANCH_FORMATTED }} git_build_type: description: "" value: ${{ steps.extract_git_info.outputs.GIT_BUILD_TYPE }} git_sha_short: description: "" value: ${{ steps.extract_git_info.outputs.GIT_SHA_SHORT }} runs: using: "composite" steps: - name: Extract branch name and tag-description shell: bash id: extract_git_info run: | set +e echo "GITHUB_REPOSITORY=$GITHUB_REPOSITORY" echo "GITHUB_REF_TYPE=$GITHUB_REF_TYPE" echo "GITHUB_HEAD_REF=$GITHUB_HEAD_REF" echo "GITHUB_REF=$GITHUB_REF" # extract branch name and stable/nightly type if [ ${GITHUB_REF_TYPE} = "tag" ]; then # extract tag name GIT_TAG_NAME=$(echo $GITHUB_REF | sed -n -r 's/^refs\/tags\/(.*)$/\1/p') echo "GIT_TAG_NAME=$GIT_TAG_NAME" # check the tag name is NUM.NUM.NUM.NUM echo ${GIT_TAG_NAME} | sed -n -r '/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/!{q1}' if [ $? -ne 0 ]; then echo "The unexpected tag name" exit 1 fi GIT_BUILD_TYPE="stable" # extract branch name A.B.C from the tag name A.B.C.D GIT_BRANCH_NAME=$(echo $GIT_TAG_NAME | sed -n -r 's/^(.*)\.[0-9]+.*/\1/p') else GIT_BUILD_TYPE="nightly" # extract branch name as is GIT_BRANCH_NAME=$(git branch --show-current) GIT_BRANCH_FORMATTED=$(echo $GIT_BRANCH_NAME | grep -E '^[0-9]{1}\.[0-9]{2}\.[0-9]{2}$' | wc -l) fi # get tag description GIT_TAG_DESC=$(git describe --tags 2>/dev/null) # Check Tag [ -z "${GIT_TAG_DESC}" ] && GIT_TAG_DESC=$GIT_BRANCH_NAME # get short tag GIT_SHA_SHORT=$(git rev-parse --short HEAD) # debug echo "GIT_TAG_DESC=$GIT_TAG_DESC" echo "GIT_BUILD_TYPE=$GIT_BUILD_TYPE" echo "GIT_BRANCH_NAME=$GIT_BRANCH_NAME" echo "GIT_SHA_SHORT=$GIT_SHA_SHORT" echo "GIT_BRANCH_FORMATTED=$GIT_BRANCH_FORMATTED" # export to GITHUB_OUTPUT echo "GIT_BUILD_TYPE=$GIT_BUILD_TYPE" >> $GITHUB_OUTPUT echo "GIT_BRANCH_NAME=$GIT_BRANCH_NAME" >> $GITHUB_OUTPUT echo "GIT_TAG_DESC=$GIT_TAG_DESC" >> $GITHUB_OUTPUT echo "GIT_SHA_SHORT=$GIT_SHA_SHORT" >> $GITHUB_OUTPUT echo "GIT_BRANCH_FORMATTED=$GIT_BRANCH_FORMATTED" >> $GITHUB_OUTPUT