Skip to content

Commit e6a5f9a

Browse files
committed
ci: Add frontend required substitution values and validation for them
1 parent 127f0e1 commit e6a5f9a

File tree

1 file changed

+37
-10
lines changed

1 file changed

+37
-10
lines changed

cloudbuild.yaml

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
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`.
@@ -8,7 +8,7 @@
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.
@@ -18,12 +18,23 @@
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

2528
substitutions:
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

2839
options:
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

Comments
 (0)