70 lines
1.8 KiB
Bash
Executable File
70 lines
1.8 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
|
TOOLS="$ROOT/.tools/bin"
|
|
mkdir -p "$TOOLS"
|
|
|
|
KUBECTL_VERSION=v1.36.2
|
|
HELM_VERSION=v4.2.3
|
|
KIND_VERSION=v0.32.0
|
|
|
|
case "$(uname -m)" in
|
|
x86_64) ARCH=amd64 ;;
|
|
aarch64|arm64) ARCH=arm64 ;;
|
|
*) echo "Unsupported architecture: $(uname -m)" >&2; exit 1 ;;
|
|
esac
|
|
|
|
verified_download() {
|
|
url=$1
|
|
checksum_url=$2
|
|
destination=$3
|
|
archive=$4
|
|
temp="${destination}.download"
|
|
checksum="${temp}.sha256"
|
|
|
|
curl --fail --location --silent --show-error "$url" --output "$temp"
|
|
curl --fail --location --silent --show-error "$checksum_url" --output "$checksum"
|
|
|
|
expected=$(awk '{print $1}' "$checksum")
|
|
actual=$(sha256sum "$temp" | awk '{print $1}')
|
|
if [ "$expected" != "$actual" ]; then
|
|
echo "Checksum mismatch for $url" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$archive" = "tar" ]; then
|
|
directory="${temp}.dir"
|
|
mkdir -p "$directory"
|
|
tar -xzf "$temp" -C "$directory"
|
|
install -m 0755 "$directory/linux-${ARCH}/helm" "$destination"
|
|
else
|
|
install -m 0755 "$temp" "$destination"
|
|
fi
|
|
}
|
|
|
|
if [ ! -x "$TOOLS/kubectl" ]; then
|
|
verified_download \
|
|
"https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/${ARCH}/kubectl" \
|
|
"https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/${ARCH}/kubectl.sha256" \
|
|
"$TOOLS/kubectl" binary
|
|
fi
|
|
|
|
if [ ! -x "$TOOLS/kind" ]; then
|
|
verified_download \
|
|
"https://kind.sigs.k8s.io/dl/${KIND_VERSION}/kind-linux-${ARCH}" \
|
|
"https://kind.sigs.k8s.io/dl/${KIND_VERSION}/kind-linux-${ARCH}.sha256sum" \
|
|
"$TOOLS/kind" binary
|
|
fi
|
|
|
|
if [ ! -x "$TOOLS/helm" ]; then
|
|
verified_download \
|
|
"https://get.helm.sh/helm-${HELM_VERSION}-linux-${ARCH}.tar.gz" \
|
|
"https://get.helm.sh/helm-${HELM_VERSION}-linux-${ARCH}.tar.gz.sha256sum" \
|
|
"$TOOLS/helm" tar
|
|
fi
|
|
|
|
"$TOOLS/kubectl" version --client
|
|
"$TOOLS/kind" version
|
|
"$TOOLS/helm" version
|