@@ -1,45 +1,46 @@
1−#!/bin/bash
1+#!/usr/bin/env bash
2−# build binary distributions for linux/amd64 and darwin/amd64
2+
5−DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5+if [[ -z ${BINARY} ]] || [[ -z ${VERSION} ]]; then
6−echo "working dir $DIR"
6+ echo "Missing required env var: BINARY=X VERSION=X $(basename $0)"
7−mkdir -p $DIR/dist
7+ exit 1
12−version=$(cat $DIR/version.go | grep "const VERSION" | awk '{print $NF}' | sed 's/"//g')
13−goversion=$(go version | awk '{print $3}')
16−echo "... running tests"
19−for os in windows linux darwin; do
20− echo "... building v$version for $os/$arch"
22− if [ $os = windows ]; then
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
31− sha256sum+=("$(shasum -a 256 $FILENAME || exit 1)")
32− cd .. && tar czvf $TARGET.tar.gz $TARGET
33− mv $TARGET.tar.gz $DIR/dist
37−checksum_file="sha256sum.txt"
10+# Check for Go version 1.13.*
38−cd $DIR/dist
11+GO_VERSION=$(go version | awk '{print $3}')
39−if [ -f $checksum_file ]; then
12+if [[ ! "${GO_VERSION}" =~ ^go1.13.* ]]; then
40− rm $checksum_file
13+ echo "Go version must be >= go1.13"
42−touch $checksum_file
16+
43−for checksum in "${sha256sum[@]}"; do
17+ARCHS=(darwin-amd64 linux-amd64 linux-arm64 linux-armv6 windows-amd64)
44− echo "$checksum" >> $checksum_file
18+
21+# Create architecture specific release dirs
22+for ARCH in "${ARCHS[@]}"; do
23+ mkdir -p release/${BINARY}-${VERSION}.${ARCH}.${GO_VERSION}
25+ GO_OS=$(echo $ARCH | awk -F- '{print $1}')
26+ GO_ARCH=$(echo $ARCH | awk -F- '{print $2}')
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
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
39+ # Create sha256sum for architecture specific binary
40+ shasum -a 256 ${BINARY}-${VERSION}.${ARCH}.${GO_VERSION}/${BINARY} > ${BINARY}-${VERSION}.${ARCH}-sha256sum.txt
42+ # Create tar file for architecture specific binary
43+ tar -czvf ${BINARY}-${VERSION}.${ARCH}.${GO_VERSION}.tar.gz ${BINARY}-${VERSION}.${ARCH}.${GO_VERSION}