| #!/bin/bash |
| # Copyright 2021 The Go Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style |
| # license that can be found in the LICENSE file. |
| |
| # This script is meant to be run from Cloud Build as a substitute |
| # for "gcloud app deploy", as in: |
| # |
| # go-app-deploy.sh app.yaml |
| # |
| # It should not be run by hand and is therefore not marked executable. |
| # |
| # It customizes the usual "gcloud app deploy" in two ways. |
| # |
| # First, it sets --no-promote or --promote according to whether |
| # the commit had a Website-Publish vote. |
| # |
| # Second, it chooses an app version like 2021-06-02-204309-2c120970 |
| # giving the date, time, and commit hash of the commit being deployed. |
| # This handles the case where multiple commits are being run through |
| # Cloud Build at once and would otherwise end up with timestamps in |
| # arbitrary order depending on the order in which Cloud Build happened |
| # to reach each's gcloud app deploy command. With our choice, the |
| # versions are ordered in git order. |
| |
| set -e |
| |
| promote=$( |
| git cat-file -p 'HEAD' | |
| awk ' |
| BEGIN { flag = "--no-promote" } |
| /^Reviewed-on:/ { flag = "--no-promote" } |
| /^Website-Publish:/ { flag = "--promote" } |
| END {print flag} |
| ' |
| ) |
| |
| version=$( |
| git log -n1 --date='format:%Y-%m-%d-%H%M%S' --pretty='format:%cd-%h' |
| ) |
| |
| gcloud app deploy $promote -v $version |
| |