65 lines
2.8 KiB
Bash
Executable File
65 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# Push docker tags to a configured docker repo, defaulting to quay.io
|
|
# You must run login.sh before running this script.
|
|
|
|
DEFAULT_DOCKER_REPO="quay.io"
|
|
DEFAULT_RELEASE_TARGET="bionic-release" # will allow unprefixed tags
|
|
|
|
# Currently only support pushing to quay.io
|
|
DOCKER_REPO=${DEFAULT_DOCKER_REPO}
|
|
|
|
git_repo=$1 # github.repository format: ORGNAME/REPONAME
|
|
git_ref=$2 # github.ref format: refs/REMOTE/REF
|
|
# eg, refs/heads/BRANCH
|
|
# refs/tags/v0.9.6-pre
|
|
git_sha=$3 # github.sha GIT_SHA
|
|
type_name=$4 # build name, s/+/_/g eg, bionic-release
|
|
os_tag=${5:-18.04} # numeric docker tag eg, 18.04
|
|
|
|
# refname will be either a branch like "master" or "some-branch",
|
|
# or a tag, like "v1.17.0-pre".
|
|
# When a tag is pushed, a build is done for both the branch and the tag, as
|
|
# separate builds.
|
|
# This is a feature specific to github actions based on the `github.ref` object
|
|
refname=$(basename ${git_ref})
|
|
|
|
# The build type needs to be sanitized into a valid tag, replacing + with _
|
|
type_tag="$(echo ${type_name} | sed 's/+/_/g')"
|
|
|
|
|
|
echo "Triggering image build"
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
${SCRIPT_DIR}/build.sh ${DOCKER_REPO}/${git_repo} ${git_sha}-${type_tag} ${os_tag}
|
|
|
|
echo "Upload image for git sha ${git_sha} to ${DOCKER_REPO}/${git_repo}"
|
|
docker push ${DOCKER_REPO}/${git_repo}:${git_sha}-${type_tag}
|
|
|
|
echo "Push tags to branch or git tag HEAD refs"
|
|
docker tag ${DOCKER_REPO}/${git_repo}:${git_sha}-${type_tag} ${DOCKER_REPO}/${git_repo}:${refname}-${type_tag}
|
|
docker push ${DOCKER_REPO}/${git_repo}:${refname}-${type_tag}
|
|
|
|
# Only push to un-suffixed tags for the default release target build type
|
|
if [[ "${type_name}" == "${DEFAULT_RELEASE_TARGET}"* ]];then
|
|
|
|
# Update branch / git tag ref
|
|
echo "Pushing tags for ${DOCKER_REPO}/${git_repo}:${refname}"
|
|
docker tag ${DOCKER_REPO}/${git_repo}:${git_sha}-${type_tag} ${DOCKER_REPO}/${git_repo}:${refname}
|
|
docker push ${DOCKER_REPO}/${git_repo}:${refname}
|
|
|
|
if [[ "${refname}" == "master" ]];then
|
|
if [[ "${edge}" == "ON" ]];then
|
|
echo "This is an edge build on master, pushing ${DOCKER_REPO}/${git_repo}:edge"
|
|
docker tag ${DOCKER_REPO}/${git_repo}:${git_sha}-${type_tag} ${DOCKER_REPO}/${git_repo}:edge
|
|
docker push ${DOCKER_REPO}/${git_repo}:edge
|
|
else
|
|
echo "This is a build on master, pushing ${DOCKER_REPO}/${git_repo}:latest :SHA as well"
|
|
docker tag ${DOCKER_REPO}/${git_repo}:${git_sha}-${type_tag} ${DOCKER_REPO}/${git_repo}:latest
|
|
docker tag ${DOCKER_REPO}/${git_repo}:${git_sha}-${type_tag} ${DOCKER_REPO}/${git_repo}:${git_sha}
|
|
docker push ${DOCKER_REPO}/${git_repo}:latest
|
|
docker push ${DOCKER_REPO}/${git_repo}:${git_sha}
|
|
fi
|
|
fi
|
|
fi
|