github.com/jcarley/cli@v0.0.0-20180201210820-966d90434c30/release (about) 1 #!/bin/bash -e 2 # only run on 64-bit linux 3 if ! go env | grep GOHOSTOS | grep -q linux; then 4 echo 'This script must be run on 64-bit linux' 5 exit 1 6 fi 7 if ! go env | grep GOHOSTARCH | grep -q amd64; then 8 echo 'This script must be run on 64-bit linux' 9 exit 1 10 fi 11 12 if [ "${VERSION}" = "" ]; then 13 echo 'You must specify the VERSION environment variable. This is the version you are releasing.' 14 exit 1 15 fi 16 if [ "${TEST}" = "false" ] && [ "${AWS_ACCESS_KEY_ID}" = "" ]; then 17 echo 'Missing required AWS_ACCESS_KEY_ID environment variable.' 18 exit 1 19 fi 20 if [ "${TEST}" = "false" ] && [ "${AWS_SECRET_ACCESS_KEY}" = "" ]; then 21 echo 'Missing required AWS_SECRET_ACCESS_KEY environment variable.' 22 exit 1 23 fi 24 if [ "${BUCKET}" = "" ]; then 25 echo 'Missing required BUCKET environment variable.' 26 exit 1 27 fi 28 29 if ! grep -q 'VERSION = "'${VERSION}'"' config/constants.go ; then 30 echo ''${VERSION}' not found in config/constants. Please update the version in config/constants.go before proceeding' 31 exit 1 32 fi 33 34 echo 'Building version '${VERSION}' binaries' 35 go vet $(go list ./... | grep -v /vendor/) 36 go install github.com/daticahealth/cli 37 GOOS=windows GOARCH=amd64 GOBIN="" go install github.com/daticahealth/cli 38 GOOS=linux GOARCH=amd64 GOBIN="" go install github.com/daticahealth/cli 39 GOOS=darwin GOARCH=amd64 GOBIN="" go install github.com/daticahealth/cli 40 41 echo 'Syncing S3 data to the public/ directory' 42 rm -rf public/* 43 aws s3 sync s3://${BUCKET}/datica public/ 44 mkdir public/${VERSION} 45 46 echo 'Building version '${VERSION}' JSON configuration files' 47 echo '{ 48 "Version": "'${VERSION}'", 49 "Sha256": "'$(openssl dgst -sha256 -binary ${GOBIN}/windows_amd64/cli.exe | openssl base64)'" 50 }' > public/windows-amd64.json 51 echo '{ 52 "Version": "'${VERSION}'", 53 "Sha256": "'$(openssl dgst -sha256 -binary ${GOBIN}/cli | openssl base64)'" 54 }' > public/linux-amd64.json 55 echo '{ 56 "Version": "'${VERSION}'", 57 "Sha256": "'$(openssl dgst -sha256 -binary ${GOBIN}/darwin_amd64/cli | openssl base64)'" 58 }' > public/darwin-amd64.json 59 60 echo 'Copying version '${VERSION}' binaries' 61 cp ${GOBIN}/windows_amd64/cli.exe public/${VERSION}/windows-amd64 62 cp ${GOBIN}/cli public/${VERSION}/linux-amd64 63 cp ${GOBIN}/darwin_amd64/cli public/${VERSION}/darwin-amd64 64 65 gzip public/${VERSION}/windows-amd64 66 gzip public/${VERSION}/linux-amd64 67 gzip public/${VERSION}/darwin-amd64 68 69 rm -rf builds 70 mkdir -p builds/datica_${VERSION}_windows_amd64/ 71 mkdir -p builds/datica_${VERSION}_linux_amd64/ 72 mkdir -p builds/datica_${VERSION}_darwin_amd64/ 73 74 cp ${GOBIN}/windows_amd64/cli.exe builds/datica_${VERSION}_windows_amd64/datica.exe 75 cp ${GOBIN}/cli builds/datica_${VERSION}_linux_amd64/datica 76 cp ${GOBIN}/darwin_amd64/cli builds/datica_${VERSION}_darwin_amd64/datica 77 78 # generate zip files for windows and darwin 79 cd builds/ 80 zip -r -X datica_${VERSION}_windows_amd64.zip datica_${VERSION}_windows_amd64 81 zip -r -X datica_${VERSION}_darwin_amd64.zip datica_${VERSION}_darwin_amd64 82 83 # generate tarballs for darwin and linux 84 tar cvzf datica_${VERSION}_linux_amd64.tar.gz datica_${VERSION}_linux_amd64 85 tar cvzf datica_${VERSION}_darwin_amd64.tar.gz datica_${VERSION}_darwin_amd64 86 87 # generate debs for linux 88 mkdir -p datica_${VERSION}_linux_amd64/usr/bin 89 mv datica_${VERSION}_linux_amd64/datica datica_${VERSION}_linux_amd64/usr/bin/ 90 cp -r ../DEBIAN datica_${VERSION}_linux_amd64/ 91 sed -i "s/{{version}}/${VERSION}/g" datica_${VERSION}_linux_amd64/DEBIAN/control 92 sed -i "s/{{arch}}/amd64/g" datica_${VERSION}_linux_amd64/DEBIAN/control 93 LINUX_AMD64_SIZE="$(stat --printf='%s' datica_${VERSION}_linux_amd64/usr/bin/datica)" 94 (( LINUX_AMD64_SIZE = LINUX_AMD64_SIZE /1024 )) 95 sed -i "s/{{size}}/${LINUX_AMD64_SIZE}/g" datica_${VERSION}_linux_amd64/DEBIAN/control 96 dpkg-deb -b datica_${VERSION}_linux_amd64 97 98 cd .. 99 100 if [ "${TEST}" = "false" ]; then 101 echo 'Publishing to S3' 102 aws s3 sync public/ s3://${BUCKET}/datica --delete --exclude "*.DS_Store" 103 104 echo 'Copying Github assets to S3' 105 aws s3 cp builds s3://${BUCKET}/assets --recursive --exclude "*.DS_Store" 106 else 107 echo 'Test mode enabled, skipping S3 upload and Github release' 108 ls -al 109 ls -al public 110 cat public/*.json 111 ls -al public/${VERSION} 112 ls -al builds 113 fi