blob: 2551872c3ccac5ab8da449a234b5946e0f77e8e5 [file] [log] [blame]
#!/bin/bash
set -ex
trap cleanup_exit INT TERM EXIT
cleanup_exit()
{
rm -rf ${HOME}/.docker
rm -f ${WORKSPACE}/{log,config.json,version.txt}
}
docker_log_in()
{
mkdir -p ${HOME}/.docker
cat > ${HOME}/.docker/config.json << EOF
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "${DOCKER_AUTH}"
}
}
}
EOF
chmod 0600 ${HOME}/.docker/config.json
}
export AWS_DEFAULT_REGION=eu-west-1
update_images=$(find -type f -name .docker-tag)
docker_log_in
for imagename in ${update_images}; do
(
docker_tag=$(cat $imagename)
if [ x"${GERRIT_BRANCH}" != x"master" ]; then
new_tag=${docker_tag}-${GERRIT_BRANCH}
docker tag ${docker_tag} ${new_tag}
docker_tag=${new_tag}
fi
for i in 30 60 120;
do
# The following code pushes docker images to both DockerHub and PRIVATE_CONTAINER_REGISTRY
# PRIVATE_CONTAINER_REGISTRY is used to overcome the DockerHub rate limiting
mirror_tag=${PRIVATE_CONTAINER_REGISTRY}/${docker_tag}
docker tag ${docker_tag} ${mirror_tag}
aws ecr get-login-password | docker login --username AWS --password-stdin ${PRIVATE_CONTAINER_REGISTRY}
REPO_NAME=$(echo "$docker_tag" | cut -d: -f1)
# create if repository not already present in PRIVATE_CONTAINER_REGISTRY
aws ecr describe-repositories --repository-names ${REPO_NAME} || aws ecr create-repository --repository-name ${REPO_NAME}
docker push ${docker_tag} && docker push ${mirror_tag} && exit 0 || true
sleep $i
docker_log_in
done
exit 1
)||echo $imagename push failed >> ${WORKSPACE}/log
done
if [ -e ${WORKSPACE}/log ]
then
echo "some images failed:"
cat ${WORKSPACE}/log
exit 1
fi