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