You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.0 KiB
122 lines
3.0 KiB
#!/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
|
|
|