|
|
@@ -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
|
|
|
|