diff --git a/.gitignore b/.gitignore index 27a7244d..bed0892e 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,9 @@ static/fonts/* static/assets static/assets/* +# buildinfo files +static/buildinfo.* + # local log files log/* diff --git a/.travis.yml b/.travis.yml index 647c09e9..5ea87ca8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,6 +29,7 @@ before_script: - docker run --link postgres96:postgres96 --link redis:redis waisbrot/wait - export postgres_ip="$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" postgres96)" - export redis_ip="$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" redis)" + - ./script/generate_build_info.sh - docker login -u $ATAT_DOCKER_REGISTRY_USERNAME -p $ATAT_DOCKER_REGISTRY_PASSWORD $ATAT_DOCKER_REGISTRY_URL - docker build --tag "${TESTER_IMAGE1_NAME}" --add-host "postgreshost:${postgres_ip}" --add-host "redishost:${redis_ip}" . -f deploy/docker/tester/Dockerfile diff --git a/script/generate_build_info.sh b/script/generate_build_info.sh new file mode 100755 index 00000000..18f8fcc7 --- /dev/null +++ b/script/generate_build_info.sh @@ -0,0 +1,138 @@ +#!/bin/bash +# +# script/generate_build_info: Generates buildinfo.html and buildinfo.json and +# places them in a publically accessable static asset +# folder + +source "$(dirname "${0}")"/../script/include/global_header.inc.sh + +# Config +APP_NAME="ATST" +STATIC_DIR="./static" + +if [ "${CIRCLECI}" = "true" ] +then + # This is a CircleCI build + BUILD_NUMBER="${CIRCLE_BUILD_NUM}" + BUILD_STATUS_URL="${CIRCLE_BUILD_URL}" + BUILT_BY="CircleCI" + CIRCLECI_WORKFLOW_BASEURL="https://circleci.com/workflow-run" + GIT_BRANCH="${CIRCLE_BRANCH}" + WORKFLOW_ID="${CIRCLE_WORKFLOW_ID}" + WORKFLOW_STATUS_URL="${CIRCLECI_WORKFLOW_BASEURL}/${CIRCLE_WORKFLOW_ID}" +else + # Assume we're running on TravisCI instead + BUILD_NUMBER="${TRAVIS_BUILD_ID}" + BUILD_STATUS_URL="https://travis-ci.org/$TRAVIS_REPO_SLUG/builds/$TRAVIS_BUILD_ID" + BUILT_BY="TravisCI" + GIT_BRANCH="${TRAVIS_BRANCH}" + WORKFLOW_ID="N/A" + WORKFLOW_STATUS_URL="#" +fi + +echo "### Generate Build Info ###" + +echo "Gathering info from git..." +COMMIT_AUTHOR=$(git log -1 --pretty=%aN) +COMMIT_AUTHOR_EMAIL=$(git log -1 --pretty=%aE) +GIT_SHA=$(git rev-parse HEAD) +# Escape all double quotes in commit message and switch newlines for \n +# (for JSON compatability) +COMMIT_MESSAGE_JSON=$(git log -1 --pretty=format:%B | sed -e 's#\([^\\]\)"#\1\\"#g' | awk 1 ORS='\\n') +# Escape all < and > characters in commit message and trade newlines for
tags +COMMIT_MESSAGE_HTML=$(git log -1 --pretty=format:%B | sed -e 's#>#>#g' | sed -e 's#<#<#g' | awk 1 ORS='
') + +# Assemble https based git repo url +GIT_REPO=$(git config --get remote.origin.url | cut -d ':' -f 2) +GIT_URL="https://github.com/${GIT_REPO}" +# Drop the trailing .git for generating github links +GITHUB_BASE_URL="${GIT_URL%.git}" +GITHUB_COMMIT_URL="${GITHUB_BASE_URL}/commit/${GIT_SHA}" + +APP_CONTAINER_CREATE_DATE=$(date '+%Y-%m-%d') +APP_CONTAINER_CREATE_TIME=$(date '+%H:%M:%S') + +echo "Generating public/buildinfo.json ..." +cat > ${STATIC_DIR}/buildinfo.json < ${STATIC_DIR}/buildinfo.html < + + ${APP_NAME} build ${BUILD_NUMBER} info + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BuildInfo (${BUILT_BY}
Container Image Creation Time:${APP_CONTAINER_CREATE_DATE} ${APP_CONTAINER_CREATE_TIME}
Build Number:${BUILD_NUMBER}
Workflow Number:${WORKFLOW_ID}
Commit SHA:${GIT_SHA}
Commit Author:${COMMIT_AUTHOR} <${COMMIT_AUTHOR_EMAIL}>
Commit Message:${COMMIT_MESSAGE_HTML}
+ + +ENDHTML