mirror of https://github.com/linkerd/linkerd2.git
75 lines
2.1 KiB
Bash
Executable File
75 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
|
|
# If the first argument to this script is "latest" or unset, it fetches the
|
|
# latest proxy binary from the linkerd2-proxy github releases. If it's set to
|
|
# a linkerd2-proxy version number (such as v2.76.0), it will fetch the binary
|
|
# matching that version number instead.
|
|
|
|
set -eu
|
|
|
|
bindir=$( cd "${0%/*}" && pwd )
|
|
rootdir=$( cd "$bindir"/.. && pwd )
|
|
builddir="$rootdir/target/proxy"
|
|
|
|
proxy_repo="${LINKERD2_PROXY_REPO:-}"
|
|
if [ -z "$proxy_repo" ]; then
|
|
proxy_repo=linkerd/linkerd2-proxy
|
|
fi
|
|
|
|
releases_url=https://api.github.com/repos/"$proxy_repo"/releases
|
|
release_prefix="${LINKERD2_PROXY_RELEASE_PREFIX:-release/}"
|
|
|
|
github_token="${GITHUB_TOKEN:-}"
|
|
if [ -z "$github_token" ] && [ -n "${GITHUB_TOKEN_FILE:-}" ] && [ -f "$GITHUB_TOKEN_FILE" ]; then
|
|
github_token=$(cat "$GITHUB_TOKEN_FILE")
|
|
fi
|
|
|
|
ghcurl() {
|
|
if [ -n "${github_token:-}" ]; then
|
|
"$bindir"/scurl -H "Authorization: Bearer ${github_token:-}" "$@"
|
|
else
|
|
"$bindir"/scurl "$@"
|
|
fi
|
|
}
|
|
|
|
mkdir -p "$builddir"
|
|
cd "$builddir"
|
|
|
|
version=${1:-latest}
|
|
arch=${2:-amd64}
|
|
if [ "$version" = latest ]; then
|
|
ghcurl "$releases_url"/latest > release.json
|
|
version=$(jq -r .tag_name release.json | sed 's,^'"${release_prefix}"',,')
|
|
else
|
|
tag="${release_prefix}${version}"
|
|
ghcurl "$releases_url"/tags/"$(printf "$tag" | jq -sRr @uri)" > release.json
|
|
fi
|
|
|
|
pkgname="linkerd2-proxy-${version}-${arch}"
|
|
|
|
pkgfile="${pkgname}.tar.gz"
|
|
pkgurl=$(jq -r '.assets[] | select(.name == "'"$pkgfile"'") | .url' release.json)
|
|
ghcurl -H 'Accept: application/octet-stream' -o "$pkgfile" "$pkgurl"
|
|
|
|
shafile="${pkgname}.txt"
|
|
shaurl=$(jq -r '.assets[] | select(.name == "'"$shafile"'") | .url' release.json)
|
|
ghcurl -H 'Accept: application/octet-stream' -o "$shafile" "$shaurl"
|
|
|
|
tar -zxvf "$pkgfile" >&2
|
|
expected=$(awk '{print $1}' "$shafile")
|
|
if [ "$(uname)" = "Darwin" ]; then
|
|
computed=$(openssl dgst -sha256 "$pkgfile" | awk '{print $2}')
|
|
else
|
|
computed=$(sha256sum "$pkgfile" | awk '{print $1}')
|
|
fi
|
|
if [ "$computed" != "$expected" ]; then
|
|
echo 'sha mismatch' >&2
|
|
exit 1
|
|
fi
|
|
|
|
mv "$pkgname/LICENSE" .
|
|
mv "$pkgname/linkerd2-proxy" .
|
|
rm -r "$pkgfile" "$pkgname"
|
|
mv linkerd2-proxy "$pkgname"
|
|
echo "$builddir/$pkgname"
|