@@ -1,45 +1,46 @@
1−#!/bin/bash
2−# build binary distributions for linux/amd64 and darwin/amd64
3−set -e
4−
5−DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6−echo "working dir $DIR"
7−mkdir -p $DIR/dist
8−dep ensure || exit 1
9−
10−os=$(go env GOOS)
11−arch=$(go env GOARCH)
12−version=$(cat $DIR/version.go | grep "const VERSION" | awk '{print $NF}' | sed 's/"//g')
13−goversion=$(go version | awk '{print $3}')
14−sha256sum=()
15−
16−echo "... running tests"
17−./test.sh
18−
19−for os in windows linux darwin; do
20− echo "... building v$version for $os/$arch"
21− EXT=
22− if [ $os = windows ]; then
23− EXT=".exe"
24− fi
25− BUILD=$(mktemp -d ${TMPDIR:-/tmp}/oauth2_proxy.XXXXXX)
26− TARGET="oauth2_proxy-$version.$os-$arch.$goversion"
27− FILENAME="oauth2_proxy-$version.$os-$arch$EXT"
28− GOOS=$os GOARCH=$arch CGO_ENABLED=0 \
29− go build -ldflags="-s -w" -o $BUILD/$TARGET/$FILENAME || exit 1
30− pushd $BUILD/$TARGET
31− sha256sum+=("$(shasum -a 256 $FILENAME || exit 1)")
32− cd .. && tar czvf $TARGET.tar.gz $TARGET
33− mv $TARGET.tar.gz $DIR/dist
34− popd
35−done
1+#!/usr/bin/env bash
2+
3+set -o errexit
4+
5+if [[ -z ${BINARY} ]] || [[ -z ${VERSION} ]]; then
6+ echo "Missing required env var: BINARY=X VERSION=X $(basename $0)"
7+ exit 1
8+fi
369
37−checksum_file="sha256sum.txt"
38−cd $DIR/dist
39−if [ -f $checksum_file ]; then
40− rm $checksum_file
10+# Check for Go version 1.13.*
11+GO_VERSION=$(go version | awk '{print $3}')
12+if [[ ! "${GO_VERSION}" =~ ^go1.13.* ]]; then
13+ echo "Go version must be >= go1.13"
14+ exit 1
4115fi
42−touch $checksum_file
43−for checksum in "${sha256sum[@]}"; do
44− echo "$checksum" >> $checksum_file
16+
17+ARCHS=(darwin-amd64 linux-amd64 linux-arm64 linux-armv6 windows-amd64)
18+
19+mkdir -p release
20+
21+# Create architecture specific release dirs
22+for ARCH in "${ARCHS[@]}"; do
23+ mkdir -p release/${BINARY}-${VERSION}.${ARCH}.${GO_VERSION}
24+
25+ GO_OS=$(echo $ARCH | awk -F- '{print $1}')
26+ GO_ARCH=$(echo $ARCH | awk -F- '{print $2}')
27+
28+ # Create architecture specific binaries
29+ if [[ ${GO_ARCH} == "armv6" ]]; then
30+ GO111MODULE=on GOOS=${GO_OS} GOARCH=arm GOARM=6 go build -ldflags="-X main.VERSION=${VERSION}" \
31+ -o release/${BINARY}-${VERSION}.${ARCH}.${GO_VERSION}/${BINARY} github.com/pusher/oauth2_proxy
32+ else
33+ GO111MODULE=on GOOS=${GO_OS} GOARCH=${GO_ARCH} go build -ldflags="-X main.VERSION=${VERSION}" \
34+ -o release/${BINARY}-${VERSION}.${ARCH}.${GO_VERSION}/${BINARY} github.com/pusher/oauth2_proxy
35+ fi
36+
37+ cd release
38+
39+ # Create sha256sum for architecture specific binary
40+ shasum -a 256 ${BINARY}-${VERSION}.${ARCH}.${GO_VERSION}/${BINARY} > ${BINARY}-${VERSION}.${ARCH}-sha256sum.txt
41+
42+ # Create tar file for architecture specific binary
43+ tar -czvf ${BINARY}-${VERSION}.${ARCH}.${GO_VERSION}.tar.gz ${BINARY}-${VERSION}.${ARCH}.${GO_VERSION}
44+
45+ cd ..
4546done