1
0
mirror of https://github.com/google/nomulus synced 2026-05-20 23:01:53 +00:00
Files
nomulus/release/cloudbuild-clouddeploy.yaml
Juan Celhay 1bff89085b Build Cloud Deploy artifacts via Cloud Build job (#3044)
* add README

* updating comments/files
2026-05-14 15:35:32 +00:00

94 lines
3.4 KiB
YAML

# This Cloud Build job prepares and applies Google Cloud Deploy configurations.
# It merges the internal repository and populates stableDeploymentAlertPolicyChecks
# in delivery-pipeline.yaml based on environment-specific configuration files.
#
# To manually trigger a build on GCB, run:
# gcloud builds submit --config release/cloudbuild-clouddeploy.yaml --substitutions \
# _INTERNAL_REPO_URL=[URL],PROJECT_ID=[PROJECT_ID] ..
steps:
# Check the out internal repo.
- name: 'gcr.io/cloud-builders/git'
entrypoint: /bin/bash
args:
- -c
- |
set -e
git clone https://gerrit.googlesource.com/gcompute-tools
sed -i s@/usr/bin/python@/usr/bin/python3@g ./gcompute-tools/git-cookie-authdaemon
./gcompute-tools/git-cookie-authdaemon
git clone ${_INTERNAL_REPO_URL} nomulus-internal
# Merge the repos.
- name: 'gcr.io/cloud-builders/git'
entrypoint: /bin/bash
args:
- -c
- |
set -e
shopt -s dotglob
rm -rf .git && rm -rf nomulus-internal/.git
cp -rf nomulus-internal/* .
rm -rf nomulus-internal
# Populate stableDeploymentAlertPolicyChecks in delivery-pipeline.yaml and variables in targets
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: /bin/bash
args:
- -c
- |
set -e
for env in crash; do
config_file="release/clouddeploy/${env}-config.yaml"
if [ -f "$config_file" ]; then
echo "Extracting checks from $config_file..."
# Extract only the indented block under stableDeploymentAlertPolicyChecks.
awk '
/^stableDeploymentAlertPolicyChecks:/ { capture = 1; next }
capture {
if ($0 ~ /^[^[:space:]]/ && $0 != "") { capture = 0; exit }
print " " $0
}
' "$config_file" > checks.tmp
# Insert the checks where the placeholder is located and remove the placeholder
sed -i '/stableDeploymentAlertPolicyChecks/r checks.tmp' release/clouddeploy/delivery-pipeline.yaml
sed -i '/stableDeploymentAlertPolicyChecks/d' release/clouddeploy/delivery-pipeline.yaml
rm -f checks.tmp
# Populate variables in target file
target_file="release/clouddeploy/${env}-target.yaml"
if [ -f "$target_file" ]; then
echo "Populating variables in $target_file..."
artifact_storage=$(sed -n 's/^artifactStorage: //p' "$config_file")
service_account=$(sed -n 's/^serviceAccount: //p' "$config_file")
cluster_val=$(sed -n 's/^cluster: //p' "$config_file")
sed -i "s|artifactStorage: artifactStorage|artifactStorage: $artifact_storage|" "$target_file"
sed -i "s|serviceAccount: serviceAccount|serviceAccount: $service_account|" "$target_file"
sed -i "s|cluster: cluster|cluster: $cluster_val|" "$target_file"
fi
fi
done
# Apply Cloud Deploy configuration
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: /bin/bash
args:
- -c
- |
set -e
for env in crash; do
target_file="release/clouddeploy/${env}-target.yaml"
if [ -f "$target_file" ]; then
echo "Applying target $target_file..."
gcloud deploy apply --file="$target_file" --region=us-central1 --project=${PROJECT_ID}
fi
done
echo 'Applying delivery-pipeline.yaml...'
gcloud deploy apply --file=release/clouddeploy/delivery-pipeline.yaml --region=us-central1 --project=${PROJECT_ID}
timeout: 3600s
options:
machineType: 'E2_HIGHCPU_32'