| # 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) |