1#!/usr/bin/env bash 2 3# This creates a KBFS release on github from the current source/tagged version. 4 5set -e -u -o pipefail # Fail on error 6 7dir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) 8cd "$dir" 9 10version=${VERSION:-} 11token=${GITHUB_TOKEN:-} 12 13if [ "$version" = "" ]; then 14 echo "Specify VERSION to build" 15 exit 1 16fi 17 18if [ "$token" = "" ]; then 19 echo "No GITHUB_TOKEN set. See https://help.github.com/articles/creating-an-access-token-for-command-line-use/" 20 exit 2 21fi 22 23build_dir="/tmp/build_kbfs" 24client_dir="$GOPATH/src/github.com/keybase/client" 25tag="v$version" 26tgz="kbfs-$version.tgz" 27 28echo "Loading release tool" 29"$client_dir/packaging/goinstall.sh" "github.com/keybase/release" 30release_bin="$GOPATH/bin/release" 31 32build() { 33 rm -rf "$build_dir" 34 mkdir -p "$build_dir" 35 cd "$build_dir" 36 37 echo "Downloading source archive" 38 src_url="https://github.com/keybase/client/go/kbfs/archive/v$version.tar.gz" 39 curl -O -J -L "$src_url" 40 41 src_tgz="kbfs-$version.tar.gz" 42 echo "Unpacking $src_tgz" 43 tar zxpf "$src_tgz" 44 rm "$src_tgz" 45 46 go_dir=/tmp/go 47 rm -rf "$go_dir" 48 mkdir -p "$go_dir/src/github.com" 49 mv "kbfs-$version" "$go_dir/src/github.com/keybase" 50 51 echo "Building kbfs" 52 GO15VENDOREXPERIMENT=1 GOPATH="$go_dir" go build -a -tags "production" -o kbfs github.com/keybase/client/go/kbfs/kbfsfuse 53 54 echo "Packaging" 55 rm -rf "$tgz" 56 tar zcpf "$tgz" kbfs 57} 58 59create_release() { 60 echo "Checking for existing release: $version" 61 api_url=`$release_bin url --user=keybase --repo=kbfs --version=$version` 62 if [ ! "$api_url" = "" ]; then 63 echo "Release already exists, skipping" 64 else 65 cd "$build_dir" 66 platform=`$release_bin platform` 67 echo "Creating release" 68 "$release_bin" create --version="$version" --repo="kbfs" 69 fi 70} 71 72upload_release() { 73 cd "$build_dir" 74 platform=`$release_bin platform` 75 echo "Uploading release" 76 "$release_bin" upload --src="$tgz" --dest="kbfs-$version-$platform.tgz" --version="$version" --repo="kbfs" 77} 78 79build 80create_release 81upload_release 82