| # 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. |
| |
| .PHONY: usage |
| |
| GO_REF ?= release-branch.go1.11 |
| TOOLS_HEAD := $(shell git rev-parse HEAD) |
| TOOLS_CLEAN := $(shell (git status --porcelain | grep -q .) && echo dirty || echo clean) |
| ifeq ($(TOOLS_CLEAN),clean) |
| DOCKER_VERSION ?= $(TOOLS_HEAD) |
| else |
| DOCKER_VERSION ?= $(TOOLS_HEAD)-dirty |
| endif |
| GCP_PROJECT := golang-org |
| DOCKER_TAG := gcr.io/$(GCP_PROJECT)/godoc:$(DOCKER_VERSION) |
| |
| 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) \ |
| --build-arg=BUILD_ENV=local \ |
| --tag=$(DOCKER_TAG) \ |
| . |
| |
| docker-push: docker-build |
| docker push $(DOCKER_TAG) |
| |
| deploy: |
| gcloud -q app deploy app.prod.yaml \ |
| --project=$(GCP_PROJECT) \ |
| --no-promote \ |
| --image-url=$(DOCKER_TAG) |
| |
| get-latest-url: |
| @gcloud app versions list \ |
| --service=default \ |
| --project=$(GCP_PROJECT) \ |
| --sort-by=~version.createTime \ |
| --format='value(version.versionUrl)' \ |
| --limit 1 | cut -f1 # NOTE(cbro): gcloud prints out createTime as the second field. |
| |
| get-latest-id: |
| @gcloud app versions list \ |
| --service=default \ |
| --project=$(GCP_PROJECT) \ |
| --sort-by=~version.createTime \ |
| --format='value(version.id)' \ |
| --limit 1 | cut -f1 # NOTE(cbro): gcloud prints out createTime as the second field. |
| |
| regtest: |
| go test -v \ |
| -regtest.host=$(shell make get-latest-url) \ |
| -run=Live |
| |
| publish: regtest |
| gcloud -q app services set-traffic default \ |
| --splits=$(shell make get-latest-id)=1 \ |
| --project=$(GCP_PROJECT) |
| |
| @echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
| @echo Stop and/or delete old versions: |
| @echo "https://console.cloud.google.com/appengine/versions?project=$(GCP_PROJECT)&serviceId=default&versionssize=50" |
| @echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |