From 421e5034015de881fc5dc86008ba029d3e19377a Mon Sep 17 00:00:00 2001 From: Chris Broadfoot Date: Tue, 2 Oct 2018 22:21:05 -0700 Subject: [PATCH] [release-branch.go1.11] cmd/godoc: add cloud build config Deploys no longer depend on Docker. With only Make and gcloud installed, the following should deploy a new version: $ git clone https://go.googlesource.com/tools $ cd tools $ cd cmd/godoc $ make cloud-build deploy Updates golang/go#28893 Updates golang/go#27205 Change-Id: I5cc1142e02dc288450d55dbd4da4b30c0a080bd5 Reviewed-on: https://go-review.googlesource.com/c/139240 Reviewed-by: Brad Fitzpatrick Reviewed-on: https://go-review.googlesource.com/c/150682 --- cmd/godoc/Dockerfile.prod | 1 + cmd/godoc/Makefile | 19 ++++++++++++++----- cmd/godoc/README.godoc-app | 6 +++++- cmd/godoc/cloudbuild.yaml | 25 +++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 cmd/godoc/cloudbuild.yaml diff --git a/cmd/godoc/Dockerfile.prod b/cmd/godoc/Dockerfile.prod index f357b8b7..d0dd1d06 100644 --- a/cmd/godoc/Dockerfile.prod +++ b/cmd/godoc/Dockerfile.prod @@ -44,6 +44,7 @@ RUN echo "requested go ref: ${GO_REF}" >> /goroot/buildinfo RUN echo "x/tools HEAD: ${TOOLS_HEAD}" >> /goroot/buildinfo RUN echo "x/tools clean: ${TOOLS_CLEAN}" >> /goroot/buildinfo RUN echo "image: ${DOCKER_TAG}" >> /goroot/buildinfo +RUN echo "build env: ${BUILD_ENV}" >> /goroot/buildinfo RUN rm -rf /goroot/.git diff --git a/cmd/godoc/Makefile b/cmd/godoc/Makefile index 5fb6d5d1..df91d9a8 100644 --- a/cmd/godoc/Makefile +++ b/cmd/godoc/Makefile @@ -19,14 +19,23 @@ usage: @echo "See Makefile and README.godoc-app" @exit 1 +cloud-build: Dockerfile.prod + gcloud builds submit \ + --project=$(GCP_PROJECT) \ + --config=cloudbuild.yaml \ + --substitutions=_GO_REF=$(GO_REF),_TOOLS_HEAD=$(TOOLS_HEAD),_TOOLS_CLEAN=$(TOOLS_CLEAN),_DOCKER_TAG=$(DOCKER_TAG) \ + ../.. # source code + docker-build: Dockerfile.prod # NOTE(cbro): move up in directory to include entire tools repo. + # NOTE(cbro): any changes made to this command must also be made in cloudbuild.yaml. cd ../..; docker build \ - -f cmd/godoc/Dockerfile.prod \ - --build-arg GO_REF=$(GO_REF) \ - --build-arg TOOLS_HEAD=$(TOOLS_HEAD) \ - --build-arg TOOLS_CLEAN=$(TOOLS_CLEAN) \ - --build-arg DOCKER_TAG=$(DOCKER_TAG) \ + -f=cmd/godoc/Dockerfile.prod \ + --build-arg=GO_REF=$(GO_REF) \ + --build-arg=TOOLS_HEAD=$(TOOLS_HEAD) \ + --build-arg=TOOLS_CLEAN=$(TOOLS_CLEAN) \ + --build-arg=DOCKER_TAG=$(DOCKER_TAG) \ + --build-arg=BUILD_ENV=local \ --tag=$(DOCKER_TAG) \ . diff --git a/cmd/godoc/README.godoc-app b/cmd/godoc/README.godoc-app index 0d62eb66..5eba93a7 100644 --- a/cmd/godoc/README.godoc-app +++ b/cmd/godoc/README.godoc-app @@ -66,9 +66,13 @@ godoc should come up at http://localhost:8080 Deploying to golang.org ----------------------- +Make sure you're signed in to gcloud: + + gcloud auth login + Build the image, push it to gcr.io, and deploy to Flex: - make docker-push deploy + make cloud-build deploy Point the load balancer to the newly deployed version: (This also runs regression tests) diff --git a/cmd/godoc/cloudbuild.yaml b/cmd/godoc/cloudbuild.yaml new file mode 100644 index 00000000..fd297f07 --- /dev/null +++ b/cmd/godoc/cloudbuild.yaml @@ -0,0 +1,25 @@ +# Copyright 2018 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. + +# NOTE(cbro): any changes to the docker command must also be +# made in docker-build in the Makefile. +# +# Variable substitutions must have a preceding underscore. See: +# https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values#using_user-defined_substitutions +steps: +- name: 'gcr.io/cloud-builders/docker' + args: [ + 'build', + '-f=cmd/godoc/Dockerfile.prod', + '--build-arg=GO_REF=${_GO_REF}', + '--build-arg=TOOLS_HEAD=${_TOOLS_HEAD}', + '--build-arg=TOOLS_CLEAN=${_TOOLS_CLEAN}', + '--build-arg=DOCKER_TAG=${_DOCKER_TAG}', + '--build-arg=BUILD_ENV=cloudbuild', + '--tag=${_DOCKER_TAG}', + '.', + ] +images: ['${_DOCKER_TAG}'] +options: + machineType: 'N1_HIGHCPU_8' # building the godoc index takes a lot of memory.