| # Copyright 2023 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. | |
| usage: FORCE | |
| exit 1 | |
| FORCE: | |
| MUTABLE_VERSION := latest | |
| # TODO(go.dev/issue/62118) change how version is generated. | |
| VERSION := $(shell ./version.sh) | |
| GCP_PROJECT_PROD := symbolic-datum-552 | |
| IMAGE_PROD := gcr.io/$(GCP_PROJECT_PROD)/gomoteserver | |
| DOCKER_IMAGE=golang/gomoteserver | |
| docker: *.go Dockerfile | |
| docker build --force-rm -f Dockerfile --build-arg "version=$(VERSION)" --tag=$(DOCKER_IMAGE):$(VERSION) ../.. | |
| # push-prod builds and pushes the gomoteserver image using the local source code. | |
| # The image is tagged with a version generated from the current git state. | |
| push-prod: | |
| gcloud builds submit --project=$(GCP_PROJECT_PROD) --config=../../deploy/cloudbuild-from-local.yaml \ | |
| --substitutions="_SERVICE_NAME=gomoteserver,TAG_NAME=$(VERSION)" ../.. | |
| # deploy-prod deploys the version of the gomoteserver that was just pushed by the push-prod target. | |
| deploy-prod: push-prod | |
| go install golang.org/x/build/cmd/xb | |
| xb --prod kubectl --namespace prod set image deployment/gomoteserver-deployment gomoteserver=$(IMAGE_PROD):$(VERSION) | |
| # push-prod-version builds and pushes the gomoteserver image from a specific git commit SHA. | |
| # This target uses a separate cloudbuild configuration to check out the specified commit before building. | |
| # | |
| # Usage: | |
| # make push-prod-version SHA=<commit-sha> | |
| push-prod-version: | |
| ifndef SHA | |
| $(error SHA is not set. Please provide a commit SHA. Usage: make push-prod-version SHA=<commit-sha>) | |
| endif | |
| gcloud builds submit --project=$(GCP_PROJECT_PROD) --config=../../deploy/cloudbuild-from-googlesource.yaml \ | |
| --substitutions="_SERVICE_NAME=gomoteserver,_SHA=$(SHA)" --no-source | |
| # deploy-prod-version deploys a specific version of the gomoteserver based on a git commit SHA. | |
| # It first builds and pushes the image using the push-prod-version target, then deploys it. | |
| # | |
| # Usage: | |
| # make deploy-prod-version SHA=<commit-sha> | |
| deploy-prod-version: push-prod-version | |
| ifndef SHA | |
| $(error SHA is not set. Please provide a commit SHA. Usage: make deploy-prod-version SHA=<commit-sha>) | |
| endif | |
| go install golang.org/x/build/cmd/xb | |
| xb --prod kubectl --namespace prod set image deployment/gomoteserver-deployment gomoteserver=$(IMAGE_PROD):$(SHA) |