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:
Kamil Trzciński 2022-04-27 18:43:24 +02:00
parent 65292a9a9c
commit 384f6231b4
9 changed files with 91 additions and 19 deletions

View file

@ -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"