| #!/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 |