From 5f6a67e6eb6d9f395199c2c43a9afdb95fbb61bc Mon Sep 17 00:00:00 2001 From: Caleb Doxsey Date: Tue, 14 Jul 2020 07:59:26 -0600 Subject: [PATCH] use custom binary for arm64 linux release (#1065) --- .github/goreleaser.yaml | 8 ++++++-- scripts/embed-envoy.bash | 22 +++++++++++++--------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/.github/goreleaser.yaml b/.github/goreleaser.yaml index 910769745..110b5fa45 100644 --- a/.github/goreleaser.yaml +++ b/.github/goreleaser.yaml @@ -21,9 +21,13 @@ builds: binary: pomerium goarch: - amd64 + - arm64 goos: - linux - darwin + ignore: + - goos: darwin + goarch: arm64 ldflags: - -s -w @@ -36,8 +40,8 @@ builds: hooks: post: - cmd: ./scripts/embed-envoy.bash {{ .Path }} - env: - - GOOS={{ .Target }} + env: # e.g. darwin_amd64 + - TARGET={{ .Target }} - id: pomerium-cli main: cmd/pomerium-cli/cli.go diff --git a/scripts/embed-envoy.bash b/scripts/embed-envoy.bash index 6e1fb9fbb..5ce63074b 100755 --- a/scripts/embed-envoy.bash +++ b/scripts/embed-envoy.bash @@ -5,16 +5,14 @@ BINARY=$1 ENVOY_VERSION=1.14.2 DIR=$(dirname "${BINARY}") -GOOS=$(echo "${GOOS-}" | cut -d _ -f 1) # goreleaser is fine +TARGET="${TARGET:-"$(go env GOOS)_$(go env GOARCH)"}" -GOOS=$(go env GOOS) - -if [ "${GOOS}" == "darwin" ]; then +if [[ "${TARGET}" == darwin_* ]]; then ENVOY_PLATFORM="darwin" -elif [ "${GOOS}" == "linux" ]; then +elif [[ "${TARGET}" == linux_* ]]; then ENVOY_PLATFORM="linux_glibc" else - echo "unsupported" + echo "unsupported TARGET: ${TARGET}" exit 1 fi @@ -22,9 +20,15 @@ fi ## https://godoc.org/github.com/tetratelabs/getenvoy/pkg/binary/envoy ## https://golang.org/pkg/archive/zip/#Writer.SetOffset export PATH=$PATH:$(go env GOPATH)/bin -HOME=${DIR} getenvoy fetch standard:${ENVOY_VERSION}/${ENVOY_PLATFORM} -ENVOY_PATH=${DIR}/.getenvoy/builds/standard/${ENVOY_VERSION}/${ENVOY_PLATFORM}/bin -ARCHIVE=${ENVOY_PATH}/envoy.zip +if [ "$TARGET" == "linux_arm64" ]; then + ENVOY_PATH="$DIR/$TARGET" + mkdir -p "$ENVOY_PATH" + curl -L -o "$ENVOY_PATH/envoy" https://github.com/pomerium/envoy-binaries/releases/download/v0.1.0/envoy-linux-arm64 +else + env HOME="${DIR}" getenvoy fetch standard:${ENVOY_VERSION}/${ENVOY_PLATFORM} + ENVOY_PATH=${DIR}/.getenvoy/builds/standard/${ENVOY_VERSION}/${ENVOY_PLATFORM}/bin +fi +ARCHIVE="${ENVOY_PATH}/envoy.zip" ( cd "${ENVOY_PATH}"