overleaf/services/web/bin/cdn_upload
nate stemen 397a3d97df Merge pull request #4374 from overleaf/jpa-support-main-branch
[misc] add support for main branch

GitOrigin-RevId: 0720706674db329d7f1ddb8e829da076b86c75f8
2021-08-04 02:05:45 +00:00

61 lines
1.6 KiB
Bash
Executable file

#!/bin/bash
set -e
function upload_with_content_type() {
content_type=$1
bucket=$2
shift 2
content_type_options=""
if [[ "$content_type" != "-" ]]; then
content_type_options="-h Content-Type:${content_type};charset=utf-8"
fi
# DOCS for gsutil -- it does not have long command line flags!
## global flags
# -h NAME:VALUE add header, can occur multiples times
# -m upload with multiple threads
## rsync flags
# -r traverse into directories recursively
# -x Python regex for excluding files from the sync
gsutil \
-h "Cache-Control:public, max-age=31536000" \
${content_type_options} \
-m \
rsync \
-r \
"$@" \
"/tmp/public/" \
"${bucket}/public/"
}
function upload_into_bucket() {
bucket=$1
# stylesheets
upload_with_content_type 'text/css' "$bucket" \
-x '.+(?<!\.css)$'
# javascript files
upload_with_content_type 'application/javascript' "$bucket" \
-x '.+(?<!\.js)$'
# the rest
upload_with_content_type '-' "$bucket" \
-x '.+\.(css|js)$'
}
# Upload to staging CDN if branch is either 'master' or 'staging-master' or main variants
if [[ "$BRANCH_NAME" == "master" || "$BRANCH_NAME" == "staging-master" || "$BRANCH_NAME" == "main" || "$BRANCH_NAME" == "staging-main" ]]; then
tar --directory=/tmp/ -xf build.tar
# delete source maps
find /tmp/public -name '*.js.map' -delete
upload_into_bucket $CDN_STAG
# Only upload to production CDN if branch is
if [[ "$BRANCH_NAME" == "master" || "$BRANCH_NAME" == "main" ]]; then
upload_into_bucket $CDN_PROD
fi
fi