| #!/usr/bin/env bash |
| set -e |
| |
| # 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. |
| |
| source private/devtools/lib.sh || { echo "Are you at repo root?"; exit 1; } |
| |
| usage() { |
| >&2 cat <<EOUSAGE |
| |
| Usage: $0 PROJECT_ID BUILD_TAG [GO_VERSION] |
| |
| Build and push docker containers for the worker and frontend services. |
| |
| Arguments: |
| PROJECT_ID GCP project ID where the built container images will be pushed. |
| BUILD_TAG Tag assigned to the resulting application container images |
| (gcr.io/\$PROJECT_ID/{frontend,worker}:\$BUILD_TAG). During Cloud |
| Build deployments, this is generated by deploy/prepare.sh. |
| GO_VERSION Official base Go Docker image tag (e.g. 1.26.4 for golang:1.26.4) |
| passed to Dockerfiles via --build-arg. If omitted, it will be |
| detected automatically from deploy-env.yaml. |
| |
| Example: |
| $0 my-project-id 20260629t12-60f10bf-2ac5e23 1.26.4 |
| $0 my-project-id 20260629t12-60f10bf-2ac5e23 |
| |
| EOUSAGE |
| exit 1 |
| } |
| |
| main() { |
| local project_id=$1 |
| local build_tag=$2 |
| local go_version=$3 |
| if [[ -z $go_version ]]; then |
| go_version=$(get_go_version) || true |
| if [[ -z $go_version ]]; then |
| die "Failed to detect go_version from deploy/deploy-env.yaml. Please specify GO_VERSION explicitly." |
| fi |
| fi |
| for service in worker frontend |
| do |
| runcmd docker build -t gcr.io/$project_id/$service:$build_tag \ |
| --build-arg GO_VERSION=$go_version \ |
| -f private/config/Dockerfile.$service . |
| runcmd docker push gcr.io/$project_id/$service:$build_tag |
| done |
| } |
| |
| main $@ |