blob: 741d59c1c24fbb4041c37c7e619cb3e7fe7a02d9 [file] [log] [blame]
#!/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