1- # cloudbuild.yaml for Deliberate Lab Backend Deployments
1+ # cloudbuild.yaml for Deliberate Lab Deployments
22#
33# This build config supports multiple deployment types controlled by the
44# substitution variable `_DEPLOYMENT_TYPE`.
88#
99# Allowed Values for `_DEPLOYMENT_TYPE`:
1010# - test:
11- # Runs linting, formatting checks, and unit tests for utils and functions .
11+ # Runs linting, formatting checks, and unit tests for all workspaces .
1212# Does NOT deploy anything.
1313# - functions:
1414# Runs validation (lint/test) and builds the project.
1818# - indexes:
1919# Deploys Firestore indexes.
2020# Includes a safety mechanism to backup existing indexes before deploying.
21+ # - frontend:
22+ # Runs validation (lint/test) and builds the project.
23+ # Deploys Cloud App Engine frontend.
2124# - all:
2225# Runs the full pipeline: validation, build, test, and deployment of
23- # functions, rules, and indexes .
26+ # functions, rules, indexes and frontend .
2427
2528substitutions :
26- _DEPLOYMENT_TYPE : ' ' # Default value, MUST be overridden by trigger.
29+ _DEPLOYMENT_TYPE : ' ' # Default value, MUST be overridden by trigger.
30+ # Frontend configuration.
31+ _FIREBASE_APP_ID : ' ' # Unique Firebase application id.
32+ _FIREBASE_API_KEY : ' ' # API key frontend will use to connect to Firebase.
33+ _FIREBASE_AUTH_DOMAIN : ' ' # Domain from which Firebase client may connect.
34+ _PROJECT_ID : ' ' # Unique Firebase/Cloud project id.
35+ _STORAGE_BUCKET : ' ' # Default Cloud Storage bucket name.
36+ _MESSAGING_SENDER_ID : ' ' # Firebase Cloud Messaging sender id.
37+ _MEASUREMENT_ID : ' ' # Google Analytics id.
2738
2839options :
2940 logging : CLOUD_LOGGING_ONLY
@@ -34,19 +45,35 @@ steps:
3445- name : ' node:22'
3546 id : ValidateSubstitutionValues
3647 env :
37- - ' DEPLOYMENT_TYPES=" all functions indexes rules test "'
48+ - ' DEPLOYMENT_TYPES=" all frontend functions indexes rules test "'
3849 script : |
3950 #!/usr/bin/env bash
4051 set -euo pipefail
4152 if [[ -z "${_DEPLOYMENT_TYPE}" ]]; then
42- echo "Validation Failed: '_DEPLOYMENT_TYPE' Substitution Value MUST be specified"
43- exit 1
53+ echo "Validation Failed: '_DEPLOYMENT_TYPE' Substitution Value MUST be specified"
54+ exit 1
4455 fi
4556 if [[ "${DEPLOYMENT_TYPES}" == *" ${_DEPLOYMENT_TYPE} "* ]]; then
46- echo "Validation Passed: '${_DEPLOYMENT_TYPE}' is in list: [${DEPLOYMENT_TYPES}]"
57+ echo "Validation Passed: '${_DEPLOYMENT_TYPE}' is in list: [${DEPLOYMENT_TYPES}]"
4758 else
48- echo "Validation Failed: '${_DEPLOYMENT_TYPE}' is not in list: [${DEPLOYMENT_TYPES}]"
49- exit 1
59+ echo "Validation Failed: '${_DEPLOYMENT_TYPE}' is not in list: [${DEPLOYMENT_TYPES}]"
60+ exit 1
61+ fi
62+ if [[ " all frontend " == *" ${_DEPLOYMENT_TYPE} "* ]]; then
63+ MISSING_VARS=""
64+ if [[ -z "${_FIREBASE_APP_ID}" ]]; then MISSING_VARS="${MISSING_VARS} _FIREBASE_APP_ID"; fi
65+ if [[ -z "${_FIREBASE_API_KEY}" ]]; then MISSING_VARS="${MISSING_VARS} _FIREBASE_API_KEY"; fi
66+ if [[ -z "${_FIREBASE_AUTH_DOMAIN}" ]]; then MISSING_VARS="${MISSING_VARS} _FIREBASE_AUTH_DOMAIN"; fi
67+ if [[ -z "${_PROJECT_ID}" ]]; then MISSING_VARS="${MISSING_VARS} _PROJECT_ID"; fi
68+ if [[ -z "${_STORAGE_BUCKET}" ]]; then MISSING_VARS="${MISSING_VARS} _STORAGE_BUCKET"; fi
69+ if [[ -z "${_MESSAGING_SENDER_ID}" ]]; then MISSING_VARS="${MISSING_VARS} _MESSAGING_SENDER_ID"; fi
70+ if [[ -z "${_MEASUREMENT_ID}" ]]; then MISSING_VARS="${MISSING_VARS} _MEASUREMENT_ID"; fi
71+
72+ if [[ -n "${MISSING_VARS}" ]]; then
73+ echo "Validation Failed: The following substitution values are missing for '${_DEPLOYMENT_TYPE}' deployment:${MISSING_VARS}"
74+ exit 1
75+ fi
76+ echo "Validation Passed: All Frontend configuration values are present."
5077 fi
5178 dir : ' .'
5279
0 commit comments