#!/bin/bash
|
# Copyright (C) 2018 The Android Open Source Project
|
#
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
# you may not use this file except in compliance with the License.
|
# You may obtain a copy of the License at
|
#
|
# http://www.apache.org/licenses/LICENSE-2.0
|
#
|
# Unless required by applicable law or agreed to in writing, software
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
# See the License for the specific language governing permissions and
|
# limitations under the License.
|
|
set -e
|
|
function echo_and_do {
|
echo $@
|
$@
|
}
|
|
PROJECT_ROOT="$(cd -P ${BASH_SOURCE[0]%/*}/..; pwd)"
|
OUT_DIR="$PROJECT_ROOT/out/ui-deploy.tmp"
|
UI_DIST_DIR="$OUT_DIR/ui-dist"
|
|
CLEAN_OUT_DIR=true
|
DEPLOY_PROD=false
|
DEPLOY_STAGING=false
|
DEBUG_BUILD=true
|
|
while [[ $# -gt 0 ]]; do
|
key="$1"
|
case $key in
|
--no-clean)
|
CLEAN_OUT_DIR=false
|
shift
|
;;
|
--prod)
|
DEPLOY_PROD=true
|
DEBUG_BUILD=false
|
shift
|
;;
|
--staging)
|
DEPLOY_STAGING=true
|
shift
|
;;
|
--release)
|
DEBUG_BUILD=false
|
shift
|
;;
|
-h|--help)
|
echo "Usage: $0 [--no-clean] [--prod] [--staging]"
|
echo " --no-clean Don't remove $OUT_DIR"
|
echo " --prod Deploy prod version (implies --release)"
|
echo " --staging Deploy staging version"
|
echo " --release Do a release build"
|
echo " -h|--help Display this message"
|
exit 0
|
shift
|
;;
|
esac
|
done
|
|
if [ "$CLEAN_OUT_DIR" = true ]; then
|
echo_and_do rm -rf "$OUT_DIR"
|
fi
|
echo_and_do mkdir -p "$UI_DIST_DIR"
|
|
if [ "$DEBUG_BUILD" = true ]; then
|
echo_and_do "$PROJECT_ROOT/tools/gn" gen "$OUT_DIR" --args="is_debug=true"
|
else
|
echo_and_do "$PROJECT_ROOT/tools/gn" gen "$OUT_DIR" --args="is_debug=false"
|
fi
|
|
echo_and_do "$PROJECT_ROOT/tools/ninja" -C "$OUT_DIR" ui
|
|
echo "Writing $UI_DIST_DIR/app.yaml"
|
cat<<EOF > "$UI_DIST_DIR/app.yaml"
|
runtime: python27
|
api_version: 1
|
threadsafe: yes
|
instance_class: B1
|
manual_scaling:
|
instances: 1
|
handlers:
|
- url: /
|
static_files: static/index.html
|
upload: static/index.html
|
secure: always
|
redirect_http_response_code: 301
|
- url: /(.*[.]wasm)
|
static_files: static/\1
|
upload: static/(.*[.]wasm)
|
mime_type: application/wasm
|
- url: /assets/(.*)
|
static_files: static/assets/\1
|
upload: static/assets/(.*)
|
expiration: "1d"
|
- url: /(.*)
|
static_files: static/\1
|
upload: static/(.*)
|
EOF
|
|
echo_and_do ln -fs ../ui $UI_DIST_DIR/static
|
|
(
|
echo_and_do cd "$UI_DIST_DIR";
|
if [ "$DEPLOY_PROD" = true ]; then
|
echo_and_do gcloud app deploy app.yaml --project perfetto-ui -v prod
|
elif [ "$DEPLOY_STAGING" = true ]; then
|
echo_and_do gcloud app deploy app.yaml --project perfetto-ui \
|
-v staging --no-promote --stop-previous-version
|
else
|
echo_and_do gcloud app deploy app.yaml --project perfetto-ui \
|
-v $USER --no-promote --stop-previous-version
|
fi
|
)
|
|
if [ "$CLEAN_OUT_DIR" = true ]; then
|
echo_and_do rm -rf "$OUT_DIR"
|
fi
|