Merge pull request #3235 from overleaf/jpa-cdn-upload-set-charset

[bin/cdn_upload] set the charset for stylesheets and javascript files

GitOrigin-RevId: f93565ef9475595de64611e04e3f4eca118f5218
This commit is contained in:
Jakob Ackermann 2020-09-28 15:07:35 +02:00 committed by Copybot
parent 12b407c18b
commit 473ff70e99

View file

@ -1,6 +1,49 @@
#!/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'
if [[ "$BRANCH_NAME" == "master" || "$BRANCH_NAME" == "staging-master" ]]; then
tar --directory=/tmp/ -xf build.tar
@ -8,10 +51,10 @@ if [[ "$BRANCH_NAME" == "master" || "$BRANCH_NAME" == "staging-master" ]]; then
# delete source maps
find /tmp/public -name '*.js.map' -delete
gsutil -h "Cache-Control:public, max-age=31536000" -m cp -r /tmp/public $CDN_STAG
upload_into_bucket $CDN_STAG
# Only upload to production CDN if branch is
if [[ "$BRANCH_NAME" == "master" ]]; then
gsutil -h "Cache-Control:public, max-age=31536000" -m cp -r /tmp/public $CDN_PROD
upload_into_bucket $CDN_PROD
fi
fi