gitlab.com/SiaPrime/SiaPrime@v1.4.1/release.sh (about) 1 #!/bin/bash 2 set -e 3 4 # version and keys are supplied as arguments 5 version="$1" 6 rc=`echo $version | awk -F - '{print $2}'` 7 keyfile="$2" 8 pubkeyfile="$3" # optional 9 if [[ -z $version || -z $keyfile ]]; then 10 echo "Usage: $0 VERSION KEYFILE" 11 exit 1 12 fi 13 if [[ -z $pubkeyfile ]]; then 14 echo "Warning: no public keyfile supplied. Binaries will not be verified." 15 fi 16 17 # check for keyfile before proceeding 18 if [ ! -f $keyfile ]; then 19 echo "Key file not found: $keyfile" 20 exit 1 21 fi 22 keysum=$(shasum -a 256 $keyfile | cut -c -64) 23 if [ $keysum != "92269cd84af7dabdf3aa358ff3d154ad68bcfd837e29d32356eda13eb9771089" ]; then 24 echo "Wrong key file: checksum does not match developer key file." 25 exit 1 26 fi 27 28 # setup build-time vars 29 ldflags="-s -w -X 'gitlab.com/SiaPrime/SiaPrime/build.GitRevision=`git rev-parse --short HEAD`' -X 'gitlab.com/SiaPrime/SiaPrime/build.BuildTime=`date`' -X 'gitlab.com/SiaPrime/SiaPrime/build.ReleaseTag=${rc}'" 30 31 for os in darwin linux windows; do 32 echo Packaging ${os}... 33 # create workspace 34 folder=release/SiaPrime-$version-$os-amd64 35 rm -rf $folder 36 mkdir -p $folder 37 # compile and sign binaries 38 for pkg in spc spd; do 39 bin=$pkg 40 if [ "$os" == "windows" ]; then 41 bin=${pkg}.exe 42 fi 43 GOOS=${os} go build -a -tags 'netgo' -ldflags="$ldflags" -o $folder/$bin ./cmd/$pkg 44 openssl dgst -sha256 -sign $keyfile -out $folder/${bin}.sig $folder/$bin 45 # verify signature 46 if [[ -n $pubkeyfile ]]; then 47 openssl dgst -sha256 -verify $pubkeyfile -signature $folder/${bin}.sig $folder/$bin 48 fi 49 50 done 51 # add other artifacts 52 cp -r doc LICENSE README.md $folder 53 # zip 54 ( 55 cd release 56 zip -rq SiaPrime-$version-$os-amd64.zip SiaPrime-$version-$os-amd64 57 openssl dgst -sha256 -sign $keyfile -out SiaPrime-$version-$os-amd64.zip.sig SiaPrime-$version-$os-amd64.zip 58 # verify signature 59 if [[ -n $pubkeyfile ]]; then 60 openssl dgst -sha256 -verify $pubkeyfile -signature SiaPrime-$version-$os-amd64.zip.sig SiaPrime-$version-$os-amd64.zip 61 fi 62 ) 63 done