mirror of
https://ops.gitlab.net/gitlab-org/gitlab-build-images.git
synced 2025-12-10 10:32:56 +01:00
Update scripts to compile arm64 based images
This changes all binaries to be platform dependent instead of being amd64 hardcoded.
This commit is contained in:
parent
65292a9a9c
commit
384f6231b4
9 changed files with 91 additions and 19 deletions
|
|
@ -6,28 +6,34 @@ SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|||
source "$SCRIPT_DIR/lib/custom-docker.sh"
|
||||
|
||||
function print_golang_args() {
|
||||
declare -A GOLANG_DOWNLOAD_SHA256
|
||||
|
||||
case "$1" in
|
||||
1.14)
|
||||
INSTALL_GOLANG_VERSION=1.14.15
|
||||
GOLANG_DOWNLOAD_SHA256=c64a57b374a81f7cf1408d2c410a28c6f142414f1ffa9d1062de1d653b0ae0d6
|
||||
GOLANG_DOWNLOAD_SHA256[amd64]=c64a57b374a81f7cf1408d2c410a28c6f142414f1ffa9d1062de1d653b0ae0d6
|
||||
GOLANG_DOWNLOAD_SHA256[arm64v8]=4d964166a189c22032521c63935437c304bb7f01673b196898cff525897a1c27
|
||||
;;
|
||||
1.15)
|
||||
INSTALL_GOLANG_VERSION=1.15.10
|
||||
GOLANG_DOWNLOAD_SHA256=4aa1267517df32f2bf1cc3d55dfc27d0c6b2c2b0989449c96dd19273ccca051d
|
||||
GOLANG_DOWNLOAD_SHA256[amd64]=4aa1267517df32f2bf1cc3d55dfc27d0c6b2c2b0989449c96dd19273ccca051d
|
||||
GOLANG_DOWNLOAD_SHA256[arm64v8]=ca3f3e84d863d8e758bfaab65430b12b6cff8f5a5648139245321d3401da64a7
|
||||
;;
|
||||
1.16)
|
||||
INSTALL_GOLANG_VERSION=1.16.12
|
||||
GOLANG_DOWNLOAD_SHA256=7d657e86493ac1d5892f340a7d88b862b12edb5ac6e73c099e8e0668a6c916b7
|
||||
GOLANG_DOWNLOAD_SHA256[amd64]=7d657e86493ac1d5892f340a7d88b862b12edb5ac6e73c099e8e0668a6c916b7
|
||||
GOLANG_DOWNLOAD_SHA256[arm64v8]=7dbf50ab2e665ecd6c86a3f1ce8c04f7167f9895b91921e25cf1bdc1cb9b5fd7
|
||||
;;
|
||||
1.17)
|
||||
INSTALL_GOLANG_VERSION=1.17.9
|
||||
GOLANG_DOWNLOAD_SHA256=9dacf782028fdfc79120576c872dee488b81257b1c48e9032d122cfdb379cca6
|
||||
GOLANG_DOWNLOAD_SHA256[amd64]=9dacf782028fdfc79120576c872dee488b81257b1c48e9032d122cfdb379cca6
|
||||
GOLANG_DOWNLOAD_SHA256[arm64v8]=44dcdcd4f0fa6f83c15ef70b31580f1e3f95895c2f11a00e36c440c3554b6ad5
|
||||
;;
|
||||
*) echo "Unknown golang version $1"; exit 1;
|
||||
esac
|
||||
|
||||
printf -- "--build-arg INSTALL_GOLANG_VERSION=%s " "$INSTALL_GOLANG_VERSION"
|
||||
printf -- "--build-arg GOLANG_DOWNLOAD_SHA256=%s " "$GOLANG_DOWNLOAD_SHA256"
|
||||
printf -- "--build-arg GOLANG_DOWNLOAD_SHA256=%s " "${GOLANG_DOWNLOAD_SHA256[$CUSTOM_DOCKER_ARCH]}"
|
||||
}
|
||||
|
||||
# If you add a new minor version here, be sure to check that the
|
||||
|
|
@ -91,16 +97,19 @@ function print_git_args() {
|
|||
|
||||
# see https://github.com/git-lfs/git-lfs/releases
|
||||
function print_lfs_args() {
|
||||
declare -A LFS_DOWNLOAD_SHA256
|
||||
|
||||
case "$1" in
|
||||
2.9)
|
||||
LFS_VERSION=2.9.1
|
||||
LFS_DOWNLOAD_SHA256=2a8e60cf51ec45aa0f4332aa0521d60ec75c76e485d13ebaeea915b9d70ea466
|
||||
LFS_DOWNLOAD_SHA256[amd64]=2a8e60cf51ec45aa0f4332aa0521d60ec75c76e485d13ebaeea915b9d70ea466
|
||||
LFS_DOWNLOAD_SHA256[arm64v8]=ff2f8472a5ac0e808108bad0cc6be5ca1849eb970228b1aa3d627bcbc8228ad9
|
||||
;;
|
||||
*) echo "Unknown Git LFS version $1"; exit 1;
|
||||
esac
|
||||
|
||||
printf -- "--build-arg LFS_VERSION=%s " "$LFS_VERSION"
|
||||
printf -- "--build-arg LFS_DOWNLOAD_SHA256=%s " "$LFS_DOWNLOAD_SHA256"
|
||||
printf -- "--build-arg LFS_DOWNLOAD_SHA256=%s " "${LFS_DOWNLOAD_SHA256[$CUSTOM_DOCKER_ARCH]}"
|
||||
}
|
||||
|
||||
function print_node_args() {
|
||||
|
|
@ -241,22 +250,43 @@ function print_gcloud_args() {
|
|||
}
|
||||
|
||||
function print_kubectl_args() {
|
||||
declare -A KUBECTL_DOWNLOAD_SHA256
|
||||
|
||||
case "$1" in
|
||||
1.23)
|
||||
KUBECTL_VERSION=1.23.0
|
||||
KUBECTL_DOWNLOAD_SHA256=2d0f5ba6faa787878b642c151ccb2c3390ce4c1e6c8e2b59568b3869ba407c4f
|
||||
KUBECTL_DOWNLOAD_SHA256[amd64]=2d0f5ba6faa787878b642c151ccb2c3390ce4c1e6c8e2b59568b3869ba407c4f
|
||||
KUBECTL_DOWNLOAD_SHA256[arm64]=1d77d6027fc8dfed772609ad9bd68f611b7e4ce73afa949f27084ad3a92b15fe
|
||||
;;
|
||||
*) echo "Unknown kubectl version $1"; exit 1;
|
||||
esac
|
||||
|
||||
printf -- "--build-arg KUBECTL_VERSION=%s " "$KUBECTL_VERSION"
|
||||
printf -- "--build-arg KUBECTL_DOWNLOAD_SHA256=%s " "$KUBECTL_DOWNLOAD_SHA256"
|
||||
printf -- "--build-arg KUBECTL_DOWNLOAD_SHA256=%s " "${KUBECTL_DOWNLOAD_SHA256[$CUSTOM_DOCKER_ARCH]}"
|
||||
}
|
||||
|
||||
function parse_arguments() {
|
||||
printf -- "-f Dockerfile.custom "
|
||||
|
||||
|
||||
# Mapping between sources of architectures
|
||||
# - arch: a current image architecture (or uname -m if matching host, but can be different)
|
||||
# - apk --print-arch: a alpine architecture for installed packages
|
||||
# - dpkg --print-architecture: a debian architecture for installed packages
|
||||
# - docker arch: a Docker Hub architecture for images
|
||||
#
|
||||
# arch | apk --print-arch | dpkg --print-architecture | docker arch
|
||||
# x86_64 | x86_64 | amd64 | amd64
|
||||
# armhf | armhf | armhf | arm32v7
|
||||
# aarch64 | aarch64 | arm64 | arm64v8
|
||||
|
||||
# defaults
|
||||
case $(arch) in
|
||||
x86_64) CUSTOM_DOCKER_ARCH=amd64 ;;
|
||||
aarch64) CUSTOM_DOCKER_ARCH=arm64v8 ;;
|
||||
*) echo "unknown architecture $(arch)"; exit 1;;
|
||||
esac
|
||||
|
||||
CUSTOM_IMAGE_NAME=debian
|
||||
CUSTOM_IMAGE_VERSION=buster
|
||||
|
||||
|
|
@ -264,6 +294,7 @@ function parse_arguments() {
|
|||
if [ -n "${!tool}" ]; then
|
||||
version="${!tool}"
|
||||
case "$tool" in
|
||||
ARCH) CUSTOM_DOCKER_ARCH=$version ;;
|
||||
DEBIAN) CUSTOM_IMAGE_VERSION=$version ;;
|
||||
RUBY) print_ruby_args $version ;;
|
||||
BUNDLER) print_bundler_args $version ;;
|
||||
|
|
@ -285,6 +316,8 @@ function parse_arguments() {
|
|||
fi
|
||||
done
|
||||
|
||||
CUSTOM_IMAGE_NAME=$CUSTOM_DOCKER_ARCH/$CUSTOM_IMAGE_NAME # ex. https://hub.docker.com/r/amd64/debian/
|
||||
|
||||
printf -- "--build-arg CUSTOM_IMAGE_NAME=%s " "$CUSTOM_IMAGE_NAME"
|
||||
printf -- "--build-arg CUSTOM_IMAGE_VERSION=%s " "$CUSTOM_IMAGE_VERSION"
|
||||
printf -- "--build-arg DEBIAN_VERSION=%s " "$CUSTOM_IMAGE_VERSION"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue