Home | History | Annotate | Download | only in ui
      1 #!/bin/bash
      2 # Copyright (C) 2018 The Android Open Source Project
      3 #
      4 # Licensed under the Apache License, Version 2.0 (the "License");
      5 # you may not use this file except in compliance with the License.
      6 # You may obtain a copy of the License at
      7 #
      8 #      http://www.apache.org/licenses/LICENSE-2.0
      9 #
     10 # Unless required by applicable law or agreed to in writing, software
     11 # distributed under the License is distributed on an "AS IS" BASIS,
     12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 # See the License for the specific language governing permissions and
     14 # limitations under the License.
     15 
     16 set -e
     17 
     18 function echo_and_do {
     19   echo $@
     20   $@
     21 }
     22 
     23 PROJECT_ROOT="$(cd -P ${BASH_SOURCE[0]%/*}/..; pwd)"
     24 OUT_DIR="$PROJECT_ROOT/out/ui-deploy.tmp"
     25 UI_DIST_DIR="$OUT_DIR/ui-dist"
     26 
     27 CLEAN_OUT_DIR=true
     28 DEPLOY_PROD=false
     29 DEPLOY_STAGING=false
     30 DEBUG_BUILD=true
     31 
     32 while [[ $# -gt 0 ]]; do
     33   key="$1"
     34   case $key in
     35       --no-clean)
     36       CLEAN_OUT_DIR=false
     37       shift
     38       ;;
     39       --prod)
     40       DEPLOY_PROD=true
     41       DEBUG_BUILD=false
     42       shift
     43       ;;
     44       --staging)
     45       DEPLOY_STAGING=true
     46       shift
     47       ;;
     48       --release)
     49       DEBUG_BUILD=false
     50       shift
     51       ;;
     52       -h|--help)
     53       echo "Usage: $0 [--no-clean] [--prod] [--staging]"
     54       echo "    --no-clean  Don't remove $OUT_DIR"
     55       echo "    --prod      Deploy prod version (implies --release)"
     56       echo "    --staging   Deploy staging version"
     57       echo "    --release   Do a release build"
     58       echo "    -h|--help   Display this message"
     59       exit 0
     60       shift
     61       ;;
     62   esac
     63 done
     64 
     65 if [ "$CLEAN_OUT_DIR" = true ]; then
     66   echo_and_do rm -rf "$OUT_DIR"
     67 fi
     68 echo_and_do mkdir -p "$UI_DIST_DIR"
     69 
     70 if [ "$DEBUG_BUILD" = true ]; then
     71   echo_and_do "$PROJECT_ROOT/tools/gn" gen "$OUT_DIR" --args="is_debug=true"
     72 else
     73   echo_and_do "$PROJECT_ROOT/tools/gn" gen "$OUT_DIR" --args="is_debug=false"
     74 fi
     75 
     76 echo_and_do "$PROJECT_ROOT/tools/ninja" -C "$OUT_DIR" ui
     77 
     78 echo "Writing $UI_DIST_DIR/app.yaml"
     79 cat<<EOF > "$UI_DIST_DIR/app.yaml"
     80 runtime: python27
     81 api_version: 1
     82 threadsafe: yes
     83 instance_class: B1
     84 manual_scaling:
     85   instances: 1
     86 handlers:
     87 - url: /
     88   static_files: static/index.html
     89   upload: static/index.html
     90   secure: always
     91   redirect_http_response_code: 301
     92 - url: /(.*[.]wasm)
     93   static_files: static/\1
     94   upload: static/(.*[.]wasm)
     95   mime_type: application/wasm
     96 - url: /assets/(.*)
     97   static_files: static/assets/\1
     98   upload: static/assets/(.*)
     99   expiration: "1d"
    100 - url: /(.*)
    101   static_files: static/\1
    102   upload: static/(.*)
    103 EOF
    104 
    105 echo_and_do ln -fs ../ui $UI_DIST_DIR/static
    106 
    107 (
    108   echo_and_do cd "$UI_DIST_DIR";
    109   if [ "$DEPLOY_PROD" = true ]; then
    110     echo_and_do gcloud app deploy app.yaml --project perfetto-ui -v prod
    111   elif [ "$DEPLOY_STAGING" = true ]; then
    112     echo_and_do gcloud app deploy app.yaml --project perfetto-ui \
    113         -v staging --no-promote --stop-previous-version
    114   else
    115     echo_and_do gcloud app deploy app.yaml --project perfetto-ui \
    116         -v $USER --no-promote --stop-previous-version
    117   fi
    118 )
    119 
    120 if [ "$CLEAN_OUT_DIR" = true ]; then
    121   echo_and_do rm -rf "$OUT_DIR"
    122 fi
    123