1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
#!/usr/bin/env bash
set -eEo pipefail
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
# shellcheck source=ci/docker_commands
source "${SCRIPTPATH}/docker_commands"
IMAGE_FLAVOR=${IMAGE_FLAVOR:-"alpine"}
IMAGE_TAG=${IMAGE_TAG:-""}
tag_latest() {
if [[ -z "${IS_LATEST}" ]]; then
return
fi
tag "${@}"
}
push_latest() {
if [[ -z "${IS_LATEST}" ]]; then
return
fi
push "${@}"
}
# Release the helper images. The first passed argument will be used as a
# prefix for the image name, which is useful to push do a different registry.
# For example `registry.gitlab.com/gitlab-org/gitlab-runner` and `gitlab`.
release_docker_helper_images() {
FLAVOR=$2
PREFIX=$3
helper_image_x86_64="${1}/gitlab-runner-helper:${PREFIX}x86_64-${REVISION}"
helper_image_x86_64_pwsh="${1}/gitlab-runner-helper:${PREFIX}x86_64-${REVISION}-pwsh"
helper_image_x86_64_version="${1}/gitlab-runner-helper:${PREFIX}x86_64-${ref_tag}"
helper_image_x86_64_pwsh_version="${1}/gitlab-runner-helper:${PREFIX}x86_64-${ref_tag}-pwsh"
helper_image_x86_64_latest="${1}/gitlab-runner-helper:${PREFIX}x86_64-latest"
helper_image_x86_64_pwsh_latest="${1}/gitlab-runner-helper:${PREFIX}x86_64-latest-pwsh"
helper_image_arm="${1}/gitlab-runner-helper:${PREFIX}arm-${REVISION}"
helper_image_arm_version="${1}/gitlab-runner-helper:${PREFIX}arm-${ref_tag}"
helper_image_arm_latest="${1}/gitlab-runner-helper:${PREFIX}arm-latest"
helper_image_arm64="${1}/gitlab-runner-helper:${PREFIX}arm64-${REVISION}"
helper_image_arm64_version="${1}/gitlab-runner-helper:${PREFIX}arm64-${ref_tag}"
helper_image_arm64_latest="${1}/gitlab-runner-helper:${PREFIX}arm64-latest"
helper_image_s390x="${1}/gitlab-runner-helper:${PREFIX}s390x-${REVISION}"
helper_image_s390x_version="${1}/gitlab-runner-helper:${PREFIX}s390x-${ref_tag}"
helper_image_s390x_latest="${1}/gitlab-runner-helper:${PREFIX}s390x-latest"
helper_image_ppc64le="${1}/gitlab-runner-helper:${PREFIX}ppc64le-${REVISION}"
helper_image_ppc64le_version="${1}/gitlab-runner-helper:${PREFIX}ppc64le-${ref_tag}"
helper_image_ppc64le_latest="${1}/gitlab-runner-helper:${PREFIX}ppc64le-latest"
helper_image_x86_64_fips="${1}/gitlab-runner-helper:${PREFIX}x86_64-${REVISION}"
helper_image_x86_64_fips_version="${1}/gitlab-runner-helper:${PREFIX}x86_64-${ref_tag}"
helper_image_x86_64_fips_latest="${1}/gitlab-runner-helper:${PREFIX}x86_64-latest"
if [[ "$FLAVOR" == "ubi-fips" ]]; then
# Special case for FIPS since we don't yet support all the architectures we do for other flavors
import "out/helper-images/prebuilt-${FLAVOR}-x86_64.tar.xz" "${helper_image_x86_64_fips}"
tag_latest "${helper_image_x86_64_fips}" "${helper_image_x86_64_fips_latest}"
tag "${helper_image_x86_64_fips}" "${helper_image_x86_64_fips_version}"
push "${helper_image_x86_64_fips}"
push_latest "${helper_image_x86_64_fips_latest}"
push "${helper_image_x86_64_fips_version}"
return 0
fi
import "out/helper-images/prebuilt-${FLAVOR}-x86_64.tar.xz" "${helper_image_x86_64}"
import "out/helper-images/prebuilt-${FLAVOR}-arm.tar.xz" "${helper_image_arm}"
import "out/helper-images/prebuilt-${FLAVOR}-arm64.tar.xz" "${helper_image_arm64}"
import "out/helper-images/prebuilt-${FLAVOR}-s390x.tar.xz" "${helper_image_s390x}"
import "out/helper-images/prebuilt-${FLAVOR}-ppc64le.tar.xz" "${helper_image_ppc64le}"
tag_latest "${helper_image_x86_64}" "${helper_image_x86_64_latest}"
tag_latest "${helper_image_arm}" "${helper_image_arm_latest}"
tag_latest "${helper_image_arm64}" "${helper_image_arm64_latest}"
tag_latest "${helper_image_s390x}" "${helper_image_s390x_latest}"
tag_latest "${helper_image_ppc64le}" "${helper_image_ppc64le_latest}"
tag "${helper_image_x86_64}" "${helper_image_x86_64_version}"
tag "${helper_image_arm}" "${helper_image_arm_version}"
tag "${helper_image_arm64}" "${helper_image_arm64_version}"
tag "${helper_image_s390x}" "${helper_image_s390x_version}"
tag "${helper_image_ppc64le}" "${helper_image_ppc64le_version}"
push "${helper_image_x86_64}"
push "${helper_image_arm}"
push "${helper_image_arm64}"
push "${helper_image_s390x}"
push "${helper_image_ppc64le}"
push_latest "${helper_image_x86_64_latest}"
push_latest "${helper_image_arm_latest}"
push_latest "${helper_image_arm64_latest}"
push_latest "${helper_image_s390x_latest}"
push_latest "${helper_image_ppc64le_latest}"
push "${helper_image_x86_64_version}"
push "${helper_image_arm_version}"
push "${helper_image_arm64_version}"
push "${helper_image_s390x_version}"
push "${helper_image_ppc64le_version}"
if [[ "$FLAVOR" != "alpine3.14" ]] && [[ "$FLAVOR" != "alpine3.15" ]]; then
# Special case until pwsh adds the alpine 3.14 and 3.15 docker images, the whole condition can be removed after that
import "out/helper-images/prebuilt-${FLAVOR}-x86_64-pwsh.tar.xz" "${helper_image_x86_64_pwsh}"
tag_latest "${helper_image_x86_64_pwsh}" "${helper_image_x86_64_pwsh_latest}"
tag "${helper_image_x86_64_pwsh}" "${helper_image_x86_64_pwsh_version}"
push "${helper_image_x86_64_pwsh}"
push_latest "${helper_image_x86_64_pwsh_latest}"
push "${helper_image_x86_64_pwsh_version}"
fi
}
# Release helper images
if [[ -n "${CI_REGISTRY_USER}" ]] && [[ -n "${CI_REGISTRY_PASSWORD}" ]] && [[ "${PUBLISH_IMAGES}" == "true" ]]; then
login "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}"
release_docker_helper_images "${CI_REGISTRY_IMAGE}" "${IMAGE_FLAVOR}" "${IMAGE_TAG}"
logout "${CI_REGISTRY}"
fi
if [[ "${PUBLISH_IMAGES}" == "true" ]] && [[ "${PUSH_TO_DOCKER_HUB}" == "true" ]]; then
login "${DOCKER_HUB_USER}" "${DOCKER_HUB_PASSWORD}"
release_docker_helper_images "${DOCKER_HUB_NAMESPACE}" "${IMAGE_FLAVOR}" "${IMAGE_TAG}"
logout
fi
if [[ "${PUBLISH_IMAGES}" == "true" ]] && [[ "${PUSH_TO_ECR_PUBLIC}" == "true" ]]; then
login "${ECR_PUBLIC_USER}" "${ECR_PUBLIC_PASSWORD}" "${ECR_PUBLIC_REGISTRY}"
release_docker_helper_images "${ECR_PUBLIC_REGISTRY}" "${IMAGE_FLAVOR}" "${IMAGE_TAG}"
logout "${ECR_PUBLIC_REGISTRY}"
fi
|