#!/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"