Riku Voipio | b8ffb56 | 2020-10-12 11:44:40 +0300 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
| 3 | set -ex |
| 4 | |
| 5 | trap cleanup_exit INT TERM EXIT |
| 6 | |
| 7 | cleanup_exit() |
| 8 | { |
| 9 | rm -rf ${HOME}/.docker |
| 10 | rm -f ${WORKSPACE}/{log,config.json,version.txt} |
| 11 | } |
| 12 | |
| 13 | docker_log_in() |
| 14 | { |
| 15 | mkdir -p ${HOME}/.docker |
Riku Voipio | ccec824 | 2020-10-12 13:56:15 +0300 | [diff] [blame] | 16 | cat > ${HOME}/.docker/config.json << EOF |
| 17 | { |
| 18 | "auths": { |
| 19 | "https://index.docker.io/v1/": { |
| 20 | "auth": "${DOCKER_AUTH}" |
| 21 | } |
| 22 | } |
| 23 | } |
| 24 | EOF |
Riku Voipio | b8ffb56 | 2020-10-12 11:44:40 +0300 | [diff] [blame] | 25 | chmod 0600 ${HOME}/.docker/config.json |
| 26 | } |
Saheer Babu | 92df453 | 2025-06-10 16:40:59 +0100 | [diff] [blame] | 27 | export AWS_DEFAULT_REGION=eu-west-1 |
Riku Voipio | b8ffb56 | 2020-10-12 11:44:40 +0300 | [diff] [blame] | 28 | update_images=$(find -type f -name .docker-tag) |
| 29 | docker_log_in |
| 30 | for imagename in ${update_images}; do |
| 31 | ( |
| 32 | docker_tag=$(cat $imagename) |
| 33 | if [ x"${GERRIT_BRANCH}" != x"master" ]; then |
| 34 | new_tag=${docker_tag}-${GERRIT_BRANCH} |
| 35 | docker tag ${docker_tag} ${new_tag} |
| 36 | docker_tag=${new_tag} |
| 37 | fi |
Saheer Babu | 92df453 | 2025-06-10 16:40:59 +0100 | [diff] [blame] | 38 | |
Riku Voipio | b8ffb56 | 2020-10-12 11:44:40 +0300 | [diff] [blame] | 39 | for i in 30 60 120; |
| 40 | do |
Saheer Babu | 92df453 | 2025-06-10 16:40:59 +0100 | [diff] [blame] | 41 | # The following code pushes docker images to both DockerHub and PRIVATE_CONTAINER_REGISTRY |
| 42 | # PRIVATE_CONTAINER_REGISTRY is used to overcome the DockerHub rate limiting |
| 43 | mirror_tag=${PRIVATE_CONTAINER_REGISTRY}/${docker_tag} |
| 44 | docker tag ${docker_tag} ${mirror_tag} |
| 45 | aws ecr get-login-password | docker login --username AWS --password-stdin ${PRIVATE_CONTAINER_REGISTRY} |
| 46 | REPO_NAME=$(echo "$docker_tag" | cut -d: -f1) |
| 47 | # create if repository not already present in PRIVATE_CONTAINER_REGISTRY |
| 48 | aws ecr describe-repositories --repository-names ${REPO_NAME} || aws ecr create-repository --repository-name ${REPO_NAME} |
| 49 | docker push ${docker_tag} && docker push ${mirror_tag} && exit 0 || true |
Riku Voipio | b8ffb56 | 2020-10-12 11:44:40 +0300 | [diff] [blame] | 50 | sleep $i |
| 51 | docker_log_in |
| 52 | done |
| 53 | exit 1 |
| 54 | )||echo $imagename push failed >> ${WORKSPACE}/log |
| 55 | done |
| 56 | |
| 57 | if [ -e ${WORKSPACE}/log ] |
| 58 | then |
| 59 | echo "some images failed:" |
| 60 | cat ${WORKSPACE}/log |
| 61 | exit 1 |
| 62 | fi |