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.
74 lines
3.1 KiB
74 lines
3.1 KiB
#!/bin/bash
|
|
# Copyright (C) 2021 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.
|
|
|
|
# This script builds the perfetto.dev docs website (via ./build) and pushes the
|
|
# contents to the gs://perfetto.dev GCS bucket. It doesn't re-deploy the
|
|
# AppEngine instance, as that doesn't depend on the contents (use
|
|
# ./appengine/deploy for that).
|
|
# This is ran by the Cloud Build infrastructure (./cloudbuild.yaml) whenever a
|
|
# docs/ change is detected. See go/perfetto-ui-autopush for more details.
|
|
|
|
set -eux
|
|
|
|
# The directory that contains this script (//infra/perfetto.dev)
|
|
readonly CUR_DIR="$(cd -P ${BASH_SOURCE[0]%/*}; pwd)"
|
|
|
|
# The repo root.
|
|
readonly ROOT_DIR=$(dirname $(dirname "$CUR_DIR"))
|
|
|
|
# The directory that will contain the static website artifacts.
|
|
readonly OUT_DIR="$ROOT_DIR/out/perfetto.dev"
|
|
|
|
# Build first.
|
|
"$CUR_DIR/build"
|
|
|
|
# The markdown docs are rendered into extension-less HTML files to make the URLs
|
|
# look nice (e.g., /docs/tracing rather than /docs/tracing.html). By default
|
|
# gsutil infers the mime-type from the extension, falling back to octet/stream
|
|
# for extension-less fiels. octect/stream causes the browser to download the
|
|
# file rather than parsing it as a web page.
|
|
# We set use_magicfile = True here, which causes gsutil to infer the MIME type
|
|
# by invoking `file -b --mime /path/to/file`.
|
|
# Unfortunately, that solves the HTML MIME problem but adds another one: the
|
|
# standard `file` util doesn't deal with .css files and marks them as text/plain
|
|
# causing the browser to ignore the CSS.
|
|
# Here what we do is replacing the standard `file` util with a custom made one
|
|
# (mime_util/file) which sets the right MIME types we want. We do this by
|
|
# prepending our script to the PATH.
|
|
export PATH="$CUR_DIR/mime_util:$PATH"
|
|
export BOTO_CONFIG=/tmp/boto
|
|
cat << EOF > $BOTO_CONFIG
|
|
[GSUtil]
|
|
use_magicfile = True
|
|
|
|
EOF
|
|
|
|
# Basic checks before uploading. Test both the existence and the mime type.
|
|
[ "$(file $OUT_DIR/index.html)" == "text/html" ]
|
|
[ "$(file $OUT_DIR/assets/style.css)" == "text/css" ]
|
|
[ "$(file $OUT_DIR/assets/home.png)" == "image/png" ]
|
|
[ "$(file $OUT_DIR/docs/images/perfetto-stack.svg)" == "image/svg+xml" ]
|
|
[ "$(file $OUT_DIR/docs/images/perfetto-stack.svg)" == "image/svg+xml" ]
|
|
[ "$(file $OUT_DIR/docs/analysis/sql-tables)" == "text/html" ]
|
|
|
|
# -j: apply 'Content-Encoding: gzip' compression to passed extensions.
|
|
# -d: mirror also deletetions.
|
|
# -c: compare checksums, not mtimes.
|
|
# -r: recursive.
|
|
# The trailing slash appended to $OUT_DIR is to prevent that gsutil creates a
|
|
# nested sub-directory inside gs://perfetto.dev/.
|
|
gsutil -m rsync -j html,js,css,svg -d -c -r \
|
|
"$OUT_DIR/" gs://perfetto.dev/
|