get GitHub git branch for AWS CodeBuild
You can get inspired by https://github.com/thii/aws-codebuild-extras
⚠️I don't recommend to run the curl
command for security sake! If some vilain stole access to the thii/aws-codebuild-extras repo, you are screwed!
Just copy paste the script (understand it!) and add it to your docker image and then call it from your file system.
#!/bin/bash
export CI=true
export CODEBUILD=true
export CODEBUILD_GIT_BRANCH=`git symbolic-ref HEAD --short 2>/dev/null`
if [ "$CODEBUILD_GIT_BRANCH" == "" ] ; then
CODEBUILD_GIT_BRANCH=`git branch -a --contains HEAD | sed -n 2p | awk '{ printf $1 }'`
export CODEBUILD_GIT_BRANCH=${CODEBUILD_GIT_BRANCH#remotes/origin/}
fi
export CODEBUILD_GIT_MESSAGE=`git log -1 --pretty=%B`
export CODEBUILD_GIT_AUTHOR=`git log -1 --pretty=%an`
export CODEBUILD_GIT_AUTHOR_EMAIL=`git log -1 --pretty=%ae`
export CODEBUILD_GIT_COMMIT=`git log -1 --pretty=%H`
export CODEBUILD_GIT_TAG=`git describe --tags --abbrev=0`
export CODEBUILD_PULL_REQUEST=false
if [[ $CODEBUILD_GIT_BRANCH == pr-* ]] ; then
export CODEBUILD_PULL_REQUEST=${CODEBUILD_GIT_BRANCH#pr-}
fi
export CODEBUILD_PROJECT=${CODEBUILD_BUILD_ID%:$CODEBUILD_LOG_PATH}
export CODEBUILD_BUILD_URL=https://$AWS_DEFAULT_REGION.console.aws.amazon.com/codebuild/home?region=$AWS_DEFAULT_REGION#/builds/$CODEBUILD_BUILD_ID/view/new
echo "==> AWS CodeBuild Extra Environment Variables:"
echo "==> CI = $CI"
echo "==> CODEBUILD = $CODEBUILD"
echo "==> CODEBUILD_GIT_AUTHOR = $CODEBUILD_GIT_AUTHOR"
echo "==> CODEBUILD_GIT_AUTHOR_EMAIL = $CODEBUILD_GIT_AUTHOR_EMAIL"
echo "==> CODEBUILD_GIT_BRANCH = $CODEBUILD_GIT_BRANCH "
echo "==> CODEBUILD_GIT_COMMIT = $CODEBUILD_GIT_COMMIT"
echo "==> CODEBUILD_GIT_MESSAGE = $CODEBUILD_GIT_MESSAGE"
echo "==> CODEBUILD_GIT_TAG = $CODEBUILD_GIT_TAG"
echo "==> CODEBUILD_PROJECT = $CODEBUILD_PROJECT"
echo "==> CODEBUILD_PULL_REQUEST = $CODEBUILD_PULL_REQUEST"
It's now possible to obtain this information directly from CodeBuild environmental variables:
CODEBUILD_WEBHOOK_BASE_REF
: The base reference name of the webhook event that triggers the current build. For a pull request, this is the branch reference.CODEBUILD_WEBHOOK_HEAD_REF
: The head reference name of the webhook event that triggers the current build. It can be a branch reference or a tag reference.CODEBUILD_WEBHOOK_TRIGGER
: Shows the webhook event that triggered the build. This variable is available only for builds triggered by a webhook. The value is parsed from the payload sent to CodeBuild by Github, Github Enterprise, or Bitbucket. The value's format depends on what type of event triggered the build.
- For builds triggered by a pull request, it is pr/pull-request-number.
- For builds triggered by creating a new branch or pushing a commit to a branch, it is branch/branch-name.
- For builds triggered by a pushing a tag to a repository, it is tag/tag-name.
Add the following command to the install
or pre_build
phase of your buildspec.yml:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/thii/aws-codebuild-extras/master/install)"
You can get more information about the build via the following environment variables:
CI
,
CODEBUILD
,
CODEBUILD_GIT_AUTHOR
,
CODEBUILD_GIT_AUTHOR_EMAIL
,
CODEBUILD_GIT_BRANCH
,
CODEBUILD_GIT_COMMIT
,
CODEBUILD_GIT_MESSAGE
,
CODEBUILD_GIT_TAG
,
CODEBUILD_PROJECT
,
CODEBUILD_PULL_REQUEST
.