func/hack/fetch-util-img-prerequisite...

61 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
alpine_version='3.21.2'
go_version='1.23.5'
alpine_release_key='0482D84022F52DF1C4E7CD43293ACD0907D9495A'
google_release_key='EB4C1BFD4F042F6DDDCCEC917721F63BD38B4796'
artifacts_dir="$(dirname "$(realpath "$0")")/../.artifacts"
if [ ! -d "$artifacts_dir" ]; then
mkdir "$artifacts_dir";
fi
GNUPGHOME="$(mktemp -d)"
export GNUPGHOME
gpg --keyserver 'keyserver.ubuntu.com' --recv-keys "$alpine_release_key"
gpg --keyserver 'keyserver.ubuntu.com' --recv-keys "$google_release_key"
declare -A arch_map
arch_map['x86_64']='amd64'
arch_map['aarch64']='arm64'
function fetch_alpine_minirootfs() {
local alpine_rel_url='https://dl-cdn.alpinelinux.org/alpine/latest-stable/releases'
local arch
for arch in 'x86_64' 'aarch64' 'ppc64le' 's390x'; do
local arch_alt="${arch_map[$arch]:-$arch}"
local tarball="${artifacts_dir}/alpine-minirootfs-${arch_alt}.tar.gz"
local signature="${artifacts_dir}/alpine-minirootfs-${arch_alt}.tar.gz.asc"
curl -sSL "${alpine_rel_url}/${arch}/alpine-minirootfs-${alpine_version}-${arch}.tar.gz" > \
"${tarball}"
curl -sSL "${alpine_rel_url}/${arch}/alpine-minirootfs-${alpine_version}-${arch}.tar.gz.asc" > \
"${signature}"
gpg --assert-signer="$alpine_release_key" --verify "${signature}" "${tarball}"
done
}
function fetch_golang() {
local arch
arch="$(uname -m)"
local arch_alt="${arch_map[$arch]:-$arch}"
local tarball="${artifacts_dir}/go.tar.gz"
local signature="${artifacts_dir}/go.tar.gz.asc"
curl -sSL "https://go.dev/dl/go${go_version}.linux-${arch_alt}.tar.gz" > "${tarball}"
curl -sSL "https://go.dev/dl/go${go_version}.linux-${arch_alt}.tar.gz.asc" > "${signature}"
gpg --assert-signer="$google_release_key" --verify "${signature}" "${tarball}"
}
function main() {
fetch_alpine_minirootfs
fetch_golang
}
main "$@"