| #!/bin/bash |
| # |
| # Copyright 2018 The Bazel Authors. All rights reserved. |
| # |
| # 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. |
| |
| # Generate a versioned documentation tree. |
| # |
| # Run this script from a git checkout of a release tag. This script will infer |
| # the tag and create the documentation tree with the correct tag injected into |
| # the static pages, archive the tree, and copy it to Google Cloud Storage. |
| # |
| # This only needs to be done once per release. This script is non-destructive. |
| # |
| # TODO(jingwen): Automate this into the release pipeline. |
| |
| set -eu |
| |
| function log_info() { |
| echo "[Info]" $@ |
| } |
| |
| readonly SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) |
| # Unless we're in a tag (e.g. 0.20.0), set DOC_VERSION to master. |
| readonly DOC_VERSION=$(git describe --tags --exact-match 2>/dev/null || echo "NOT_A_RELEASE") |
| |
| if [[ $DOC_VERSION == "NOT_A_RELEASE" ]] |
| then |
| log_info "You are currently in the branch: `git rev-parse --abbrev-ref HEAD`" |
| log_info "Please run this script from a git checkout of a release tag, e.g. git checkout 0.20.0" |
| log_info "See the valid list of tags with 'git tag'" |
| exit 1 |
| fi |
| |
| function cleanup() { |
| mv $SCRIPT_DIR/../../site/_config.yml{.bak,} |
| } |
| |
| read -p "You're going to generate the docs for $DOC_VERSION. Continue? <y/n> " prompt |
| if [[ $prompt =~ [yY](es)* ]] |
| then |
| # Modify the "version" Jekyll variable so all links in anchor tags are generated |
| # with the injected version. |
| sed -i.bak "s/master/$DOC_VERSION/" $SCRIPT_DIR/../../site/_config.yml |
| trap cleanup EXIT |
| |
| bazel build //site:jekyll-tree --action_env=DOC_VERSION=$DOC_VERSION |
| |
| # -n: no-clobber; prevent overwriting existing archives to be non-destructive. |
| # There should be no need to delete existing archives once it's uploaded. But |
| # should there be such a need, please file an issue. |
| # |
| # -a public-read: set the default ACL for uploaded archives to public-read for Bazel to download it. |
| gsutil cp -n -a public-read $(cd $SCRIPT_DIR && bazel info bazel-genfiles)/site/jekyll-tree.tar gs://bazel-mirror/bazel_versioned_docs/jekyll-tree-$DOC_VERSION.tar |
| |
| log_info "Done." |
| log_info "Now, please add \"$DOC_VERSION\" to the doc_versions list in <workspace>/site/_config.yml." |
| log_info "Please also add \"$DOC_VERSION\" to <workspace>/scripts/docs/doc_versions.bzl." |
| fi |