cloudbuild.reporting.yaml (127 lines of code) (raw):

#-- Copyright 2024 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 #-- #-- https://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: # init_deployment_config.py leaves the validated config.json file in workspace/config so it's available for other build steps - name: gcr.io/kittycorn-public/deploy-kittycorn:v2.0 id: "init_deploy_config" script: | #!/usr/bin/env bash set -e echo "Initial configuration ${_CONFIG_FILE}:" cat "${_CONFIG_FILE}" # Save absolute config file path to .env file # that can be accessed by all Cloud Build steps since exported env # variables do not persist between steps. realpath "${_CONFIG_FILE}" > /workspace/config_file_full_path.env python3 common/init_deployment_config.py \ --config-file ${_CONFIG_FILE} \ --sub-validator "" echo "Processed configuration:" cat ${_CONFIG_FILE} echo -e "\n--------------------------------" # Generate required K9 Processing tables in case they don't exist, so as not to break Reporting. - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: "generate_k9_placeholder" waitFor: ["init_deploy_config"] script: | #!/bin/bash echo "Creating placeholder K9 Processing tables in case they do not exist." set -e export PYTHONPATH=${PYTHONPATH}:./src if [[ ${_TGT_BUCKET} != "" ]] then _TGT_BUCKET_=${_TGT_BUCKET} else _TGT_BUCKET_=$(jq -r ."targetBucket" ${_CONFIG_FILE}) fi declare -a _WORKER_POOL_OPTIONS if [[ -n "${_WORKER_POOL_NAME}" ]]; then _WORKER_POOL_OPTIONS+=(--worker_pool_name "${_WORKER_POOL_NAME}") fi if [[ -n "${_CLOUD_BUILD_REGION}" ]]; then _WORKER_POOL_OPTIONS+=(--region "${_CLOUD_BUILD_REGION}") fi common/materializer/deploy.sh \ --gcs_logs_bucket ${_GCS_BUCKET} \ --gcs_tgt_bucket ${_TGT_BUCKET_} \ --module_name "k9" \ --target_type "processing" \ --config_file ${_CONFIG_FILE} \ --materializer_settings_file config/k9_placeholder_settings.yaml \ "${_WORKER_POOL_OPTIONS[@]}" echo "✅ Placeholder K9 Processing tables have been created if they did not exist." - name: gcr.io/kittycorn-public/deploy-kittycorn:v2.0 id: "generate_prereqs" waitFor: ["init_deploy_config"] script: | #!/usr/bin/env bash if [[ ${_TGT_BUCKET} != "" ]] then _TGT_BUCKET_=${_TGT_BUCKET} else _TGT_BUCKET_=$(jq -r ."targetBucket" ${_CONFIG_FILE}) fi bq_object_settings_file="config/reporting_settings_common_prereqs.yaml" # Execute the common report generation script. declare -a _WORKER_POOL_OPTIONS if [[ -n "${_WORKER_POOL_NAME}" ]]; then _WORKER_POOL_OPTIONS+=(--worker_pool_name "${_WORKER_POOL_NAME}") fi if [[ -n "${_CLOUD_BUILD_REGION}" ]]; then _WORKER_POOL_OPTIONS+=(--region "${_CLOUD_BUILD_REGION}") fi common/materializer/deploy.sh \ --gcs_logs_bucket ${_GCS_BUCKET} \ --gcs_tgt_bucket ${_TGT_BUCKET_} \ --module_name "SAP" \ --target_type "Reporting" \ --config_file ${_CONFIG_FILE} \ --materializer_settings_file ${bq_object_settings_file} \ --k9_manifest ${_K9_MANIFEST_FILE} \ "${_WORKER_POOL_OPTIONS[@]}" - name: gcr.io/kittycorn-public/deploy-kittycorn:v2.0 id: "reporting" waitFor: ["generate_k9_placeholder", "generate_prereqs"] script: | #!/usr/bin/env bash set -e _SQL_FLAVOUR_=$(jq -r ."SAP.SQLFlavor" ${_CONFIG_FILE}) if [[ ${_TGT_BUCKET} != "" ]] then _TGT_BUCKET_=${_TGT_BUCKET} else _TGT_BUCKET_=$(jq -r ."targetBucket" ${_CONFIG_FILE}) fi # Reporting setting file is sql flavor specific. bq_object_settings_file="reporting_settings_${_SQL_FLAVOUR_}.yaml" # Execute the common report generation script. declare -a _WORKER_POOL_OPTIONS if [[ -n "${_WORKER_POOL_NAME}" ]]; then _WORKER_POOL_OPTIONS+=(--worker_pool_name "${_WORKER_POOL_NAME}") fi if [[ -n "${_CLOUD_BUILD_REGION}" ]]; then _WORKER_POOL_OPTIONS+=(--region "${_CLOUD_BUILD_REGION}") fi common/materializer/deploy.sh \ --gcs_logs_bucket ${_GCS_BUCKET} \ --gcs_tgt_bucket ${_TGT_BUCKET_} \ --module_name "SAP" \ --target_type "Reporting" \ --config_file ${_CONFIG_FILE} \ --materializer_settings_file ${bq_object_settings_file} \ --k9_manifest ${_K9_MANIFEST_FILE} \ "${_WORKER_POOL_OPTIONS[@]}" - name: gcr.io/kittycorn-public/deploy-kittycorn:v2.0 id: 'datamesh' waitFor: ['reporting'] script: | #!/usr/bin/env bash set -e _DEPLOY_DATA_MESH_=$(jq -r ."deployDataMesh" ${_CONFIG_FILE}) if [[ ${_DEPLOY_DATA_MESH_} == "true" ]]; then _SQL_FLAVOR_=$(jq -r ."SAP.SQLFlavor" ${_CONFIG_FILE}) python3 common/data_mesh/deploy_data_mesh.py \ --config-file ${_CONFIG_FILE} \ --tag-template-directories config/${_SQL_FLAVOR_}/tag_templates \ --policy-directories config/${_SQL_FLAVOR_}/policy_taxonomies \ --lake-directories config/${_SQL_FLAVOR_}/lakes \ --annotation-directories config/${_SQL_FLAVOR_}/annotations else echo "==Skipping Data Mesh==" fi logsBucket: "gs://${_GCS_BUCKET}" serviceAccount: "${_BUILD_ACCOUNT}" timeout: 18000s substitutions: _CONFIG_FILE: "config/config.json" _K9_MANIFEST_FILE: "k9_manifest.yaml" options: substitution_option: "ALLOW_LOOSE" automapSubstitutions: true pool: name: "${_WORKER_POOL_NAME}"