cloudbuild.yaml (58 lines of code) (raw):

# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. steps: - id: server build name: buildpacksio/pack args: - build - us-docker.pkg.dev/$PROJECT_ID/containers/server - --builder=gcr.io/buildpacks/builder:v1 - --path=server/ # Because this image is immediately used in the next step, this action must happen now. - id: server push name: gcr.io/cloud-builders/docker args: - push - us-docker.pkg.dev/$PROJECT_ID/containers/server - id: terraform name: hashicorp/terraform dir: provisioning/terraform env: - PROJECT_ID=$PROJECT_ID - REGION=$_REGION script: | #!/bin/sh terraform init -backend-config="bucket=terraform-${PROJECT_ID}" terraform apply -auto-approve -no-color \ -var project_id=${PROJECT_ID} \ -var region=${REGION} - id: server migrate name: "gcr.io/google.com/cloudsdktool/cloud-sdk:slim" env: - "CLOUDSDK_RUN_REGION=$_REGION" script: gcloud run jobs execute migrate --wait # Only since the client is also node-based can the firebase image can be used for this step. - id: client deploy name: us-docker.pkg.dev/$PROJECT_ID/containers/firebase dir: client env: - PROJECT_ID=$PROJECT_ID - AVOCANO_PURCHASE_MODE=$_PURCHASE_MODE script: | #!/bin/bash npm i npm run build firebase deploy --project $PROJECT_ID --only hosting # Optionally run tests, confirming deployment (run with '--substitutions=_RUN_TESTS=yes') # Use Debian 11 Bullseye until Playwright supports Debian 12 Bookworm # - https://playwright.dev/python/docs/intro#system-requirements - id: "test deployment" name: python:3.13-bullseye dir: provisioning env: - _RUN_TESTS=$_RUN_TESTS - AVOCANO_PURCHASE_MODE=$_PURCHASE_MODE script: | #!/bin/bash if [ -z $_RUN_TESTS ]; then echo "_RUN_TESTS not defined, so not running tests." exit 0 fi python -m pip install -r test/requirements.txt playwright install --with-deps python -m pytest timeout: 1800s substitutions: _REGION: us-central1 _RUN_TESTS: "" _PURCHASE_MODE: ""