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