kiteco-public/scripts/deploy_webapp.sh
2021-12-31 23:54:19 -08:00

101 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
set -e
GOPATH=$(go env GOPATH)
KITECO="${KITECO:-$GOPATH/src/github.com/kiteco/kiteco}"
if [[ -z "$2" ]]; then
echo "no alternative repo directory passed in"
else
echo "alt repo directory given: $2"
KITECO=$2
fi
REGION=us-west-1
PROD_BUCKET=www.kite.com
PROD_BUNNY_PULL_ZONE=XXXXXXX
PROD_DISTRIBUTION_ID=XXXXXXX
STAGING_BUCKET=ga-staging.kite.com
STAGING_BUNNY_PULL_ZONE=XXXXXXX
STAGING_DISTRIBUTION_ID=XXXXXXX
BUCKET=$STAGING_BUCKET
DISTRIBUTION_ID=$STAGING_DISTRIBUTION_ID
BUNNY_PULL_ZONE=$STAGING_BUNNY_PULL_ZONE
BUNNY_API_KEY=$(aws --region us-west-1 secretsmanager get-secret-value --secret-id bunny_cdn_api_key --query 'SecretString' --output text)
if [ -z "$BUNNY_API_KEY" ]
then
echo "Can't get Bunny CDN api key from AWS"
exit 1
fi
rm -rf $KITECO/web/app/build
if [[ $1 = "prod" ]]; then
BUCKET=$PROD_BUCKET
DISTRIBUTION_ID=$PROD_DISTRIBUTION_ID
BUNNY_PULL_ZONE=$PROD_BUNNY_PULL_ZONE
make webapp-build-prod
else
make webapp-build-staging
fi
if [ "$SAFE_MODE" = true ]; then
echo "deploy_webapp.sh: SAFE MODE ENABLED, EXITING BEFORE POTENTIALLY DESTRUCTIVE ACTIONS"
exit
fi
if [[ -z "$BUCKET" ]]; then
echo "BUCKET is not set. exiting."
exit 1
fi
if [[ -z "$REGION" ]]; then
echo "REGION is not set. exiting."
exit 1
fi
if [[ -z "$DISTRIBUTION_ID" ]]; then
echo "DISTRIBUTION_ID is not set. exiting."
exit 1
fi
echo "using bucket: $BUCKET"
echo "using dir: $KITECO"
cd $KITECO
# remove existing files
aws s3 rm s3://$BUCKET \
--region $REGION --recursive \
--exclude "sitemap*.xml.gz" \
--exclude "build_logs/*.txt" \
--exclude "easter_egg.txt"
# sync website prod directory
# 43200 seconds == 12 hours
aws s3 sync ./web/app/build s3://$BUCKET --region $REGION --cache-control max-age=43200 \
--exclude "index.html" \
--exclude "62g0ni*.html"
# cp index.html with cache-control setting at 5 minutes
aws s3 cp ./web/app/build/index.html s3://$BUCKET/index.html --region $REGION --cache-control max-age=300
aws configure set preview.cloudfront true
aws cloudfront create-invalidation --distribution-id $DISTRIBUTION_ID --paths /\*
curl -H"Content-Length:0" \
-H"Content-Type:application/json" \
-H"AccessKey:$BUNNY_API_KEY" \
-XPOST \
"https://bunnycdn.com/api/pullzone/$BUNNY_PULL_ZONE/purgeCache"
if [ $? -ne 0 ]; then
echo "Error invlidating CDN"
exit 1
fi