blob: 403b619fdee0b5d2dc032e358dc4e4175ae2ce5a [file] [log] [blame]
#!/bin/bash
#===-- build_deploy.sh ---------------------------------------------------===//
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
#===----------------------------------------------------------------------===//
# This script will deploy a docker image to the registry.
# Arguments: <path to Dockerfile>
#
# This updates the `VERSION` file with the latest version number.
#===----------------------------------------------------------------------===//
set -eu
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
IMAGE_NAME="${1%/}"
cd "${DIR}/${IMAGE_NAME}"
# read local version number from file and increment it
# TODO: maybe also get latest version number from repository and take the
# maximum of local and repo versions.
VERSION=$(( $(cat VERSION) + 1 ))
# on Windows: USER=$USERNAME
if [ -n "${OS+x}" ] && [[ "${OS}" == "Windows_NT" ]] ; then
USER="${USERNAME}"
fi
# get the git hash and add some suffixes
GIT_HASH=$(git rev-parse HEAD)
if [[ $(git diff --stat) != '' ]]; then
# if working copy is dirty
GIT_HASH+="-dirty-${USER}"
elif [[ $(git --no-pager diff origin/master | wc -l) > 0 ]]; then
# if the hash has not been uploaded to origin/master yet
GIT_HASH+="-local-${USER}"
fi
# fully qualified image name
# FIXME: use variables to configure URL
QUALIFIED_NAME="gcr.io/sanitizer-bots/${IMAGE_NAME}"
# tags to be added to the image and pushed to the repository
TAGS=(
"${QUALIFIED_NAME}:latest"
"${QUALIFIED_NAME}:${VERSION}"
"${QUALIFIED_NAME}:${GIT_HASH}"
)
# build the image and tag it locally
docker build -t ${IMAGE_NAME}:latest -t ${IMAGE_NAME}:${VERSION} .
# print the list of tags to be pushed
echo "-----------------------------------------"
echo "image version: ${VERSION}"
echo "tags:"
printf ' %s\n' "${TAGS[@]}"
echo "-----------------------------------------"
read -p "Push to registry? [yN]" -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]
then
for TAG in "${TAGS[@]}"
do
docker tag ${IMAGE_NAME}:${VERSION} "${TAG}"
docker push "${TAG}"
done
# store the version number
echo "${VERSION}" > VERSION
fi