cloudbuild.marketing.yaml (281 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. # This cloudbuild file generates all the necessary objects (DAG files, Bigquery # tables and views etc) for a Cortex deployment of Marketing related data sources. # Input parameters: # _GCS_LOGS_BUCKET : An existing GCS bucket where build logs will be written. --- steps: # Validate configs. - 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 src/common/init_deployment_config.py \ --config-file ${_CONFIG_FILE} \ --sub-validator "src" echo "Processed configuration:" cat ${_CONFIG_FILE} echo -e "\n--------------------------------" # Google Ads section - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: googleads_deploy waitFor: ["init_deploy_config"] script: | #!/usr/bin/env bash set -e deploy_googleads=$(jq -r .marketing.deployGoogleAds ${_CONFIG_FILE}) if [[ "${deploy_googleads}" == "true" ]]; then src/GoogleAds/deploy.sh else echo "== Skipping Google Ads ==" fi env: - _CONFIG_FILE=${_CONFIG_FILE} - _GCS_LOGS_BUCKET=${_GCS_LOGS_BUCKET} - _WORKER_POOL_NAME=${_WORKER_POOL_NAME} - _CLOUD_BUILD_REGION=${_CLOUD_BUILD_REGION} # CM360 section - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: cm360_deploy waitFor: ["init_deploy_config"] script: | #!/usr/bin/env bash set -e deploy_cm360=$(jq -r .marketing.deployCM360 ${_CONFIG_FILE}) if [[ "${deploy_cm360}" == "true" ]]; then src/CM360/deploy.sh else echo "== Skipping CM360 ==" fi env: - _CONFIG_FILE=${_CONFIG_FILE} - _GCS_LOGS_BUCKET=${_GCS_LOGS_BUCKET} - _WORKER_POOL_NAME=${_WORKER_POOL_NAME} - _CLOUD_BUILD_REGION=${_CLOUD_BUILD_REGION} # TikTok section - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: tiktok_deploy waitFor: ["init_deploy_config"] script: | #!/usr/bin/env bash set -e deploy_tiktok=$(jq -r .marketing.deployTikTok ${_CONFIG_FILE}) if [[ "${deploy_tiktok}" == "true" ]]; then src/TikTok/deploy.sh else echo "== Skipping TikTok ==" fi env: - _CONFIG_FILE=${_CONFIG_FILE} - _GCS_LOGS_BUCKET=${_GCS_LOGS_BUCKET} - _WORKER_POOL_NAME=${_WORKER_POOL_NAME} - _CLOUD_BUILD_REGION=${_CLOUD_BUILD_REGION} # LiveRamp section - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: liveramp_deploy waitFor: ["init_deploy_config"] script: | #!/usr/bin/env bash set -e deploy_liveramp=$(jq -r .marketing.deployLiveRamp ${_CONFIG_FILE}) if [[ "${deploy_liveramp}" == "true" ]]; then src/LiveRamp/deploy.sh else echo "== Skipping LiveRamp ==" fi env: - _CONFIG_FILE=${_CONFIG_FILE} - _GCS_LOGS_BUCKET=${_GCS_LOGS_BUCKET} # Meta section - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: meta_deploy waitFor: ["init_deploy_config"] script: | #!/usr/bin/env bash set -e deploy_meta=$(jq -r .marketing.deployMeta ${_CONFIG_FILE}) if [[ "${deploy_meta}" == "true" ]]; then src/Meta/deploy.sh else echo "== Skipping Meta ==" fi env: - _CONFIG_FILE=${_CONFIG_FILE} - _GCS_LOGS_BUCKET=${_GCS_LOGS_BUCKET} - _WORKER_POOL_NAME=${_WORKER_POOL_NAME} - _CLOUD_BUILD_REGION=${_CLOUD_BUILD_REGION} # Salesforce Marketing Cloud section - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: sfmc_deploy waitFor: ["init_deploy_config"] script: | #!/usr/bin/env bash set -e deploy_sfmc=$(jq -r .marketing.deploySFMC ${_CONFIG_FILE}) if [[ "${deploy_sfmc}" == "true" ]]; then src/SFMC/deploy.sh else echo "== Skipping SFMC ==" fi env: - _CONFIG_FILE=${_CONFIG_FILE} - _GCS_LOGS_BUCKET=${_GCS_LOGS_BUCKET} - _WORKER_POOL_NAME=${_WORKER_POOL_NAME} - _CLOUD_BUILD_REGION=${_CLOUD_BUILD_REGION} # Google Analytics 4 section - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: ga4_deploy waitFor: ["init_deploy_config"] script: | #!/usr/bin/env bash set -e deploy_ga4=$(jq -r .marketing.deployGA4 ${_CONFIG_FILE}) if [[ ${deploy_ga4} == "true" ]]; then src/GA4/deploy.sh else echo "== Skipping Google Analytics 4 ==" fi env: - _CONFIG_FILE=${_CONFIG_FILE} - _GCS_LOGS_BUCKET=${_GCS_LOGS_BUCKET} - _WORKER_POOL_NAME=${_WORKER_POOL_NAME} - _CLOUD_BUILD_REGION=${_CLOUD_BUILD_REGION} # DV360 section - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: dv360_deploy waitFor: ["init_deploy_config"] script: | #!/usr/bin/env bash set -e deploy_dv360=$(jq -r .marketing.deployDV360 ${_CONFIG_FILE}) if [[ ${deploy_dv360} == "true" ]]; then src/DV360/deploy.sh else echo "== Skipping DV360 ==" fi env: - _CONFIG_FILE=${_CONFIG_FILE} - _GCS_LOGS_BUCKET=${_GCS_LOGS_BUCKET} # Data Mesh section - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: "googleads_datamesh" waitFor: ["googleads_deploy"] script: | #!/usr/bin/env bash set -e _DEPLOY_DATA_MESH_=$(jq -r ."deployDataMesh" ${_CONFIG_FILE}) _DEPLOY_GOOGLE_ADS_=$(jq -r ."marketing.deployGoogleAds" ${_CONFIG_FILE}) if [[ ${_DEPLOY_DATA_MESH_} == "true" && \ ${_DEPLOY_GOOGLE_ADS_} == "true" ]]; then python3 src/common/data_mesh/deploy_data_mesh.py \ --config-file ${_CONFIG_FILE} \ --tag-template-directories src/GoogleAds/config/tag_templates \ --policy-directories src/GoogleAds/config/policy_taxonomies \ --lake-directories src/GoogleAds/config/lakes \ --annotation-directories \ src/GoogleAds/config/annotations/reporting else echo "==Skipping Data Mesh==" fi - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: "cm360_datamesh" waitFor: ["cm360_deploy"] script: | #!/usr/bin/env bash set -e _DEPLOY_DATA_MESH_=$(jq -r ."deployDataMesh" ${_CONFIG_FILE}) _DEPLOY_CM360_=$(jq -r ."marketing.deployCM360" ${_CONFIG_FILE}) if [[ ${_DEPLOY_DATA_MESH_} == "true" && \ ${_DEPLOY_CM360_} == "true" ]]; then python3 src/common/data_mesh/deploy_data_mesh.py \ --config-file ${_CONFIG_FILE} \ --tag-template-directories src/CM360/config/tag_templates \ --policy-directories src/CM360/config/policy_taxonomies \ --lake-directories src/CM360/config/lakes \ --annotation-directories \ src/CM360/config/annotations/reporting else echo "==Skipping Data Mesh==" fi - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: "tiktok_datamesh" waitFor: ["tiktok_deploy"] script: | #!/usr/bin/env bash set -e _DEPLOY_DATA_MESH_=$(jq -r ."deployDataMesh" ${_CONFIG_FILE}) _DEPLOY_TIKTOK_=$(jq -r ."marketing.deployTikTok" ${_CONFIG_FILE}) if [[ ${_DEPLOY_DATA_MESH_} == "true" && \ ${_DEPLOY_TIKTOK_} == "true" ]]; then python3 src/common/data_mesh/deploy_data_mesh.py \ --config-file ${_CONFIG_FILE} \ --tag-template-directories src/TikTok/config/tag_templates \ --policy-directories src/TikTok/config/policy_taxonomies \ --lake-directories src/TikTok/config/lakes \ --annotation-directories \ src/TikTok/config/annotations/reporting else echo "==Skipping Data Mesh==" fi - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: "meta_datamesh" waitFor: ["meta_deploy"] script: | #!/usr/bin/env bash set -e _DEPLOY_DATA_MESH_=$(jq -r ."deployDataMesh" ${_CONFIG_FILE}) _DEPLOY_META_=$(jq -r ."marketing.deployMeta" ${_CONFIG_FILE}) if [[ ${_DEPLOY_DATA_MESH_} == "true" && \ ${_DEPLOY_META_} == "true" ]]; then python3 src/common/data_mesh/deploy_data_mesh.py \ --config-file ${_CONFIG_FILE} \ --tag-template-directories src/Meta/config/tag_templates \ --policy-directories src/Meta/config/policy_taxonomies \ --lake-directories src/Meta/config/lakes \ --annotation-directories \ src/Meta/config/annotations/reporting else echo "==Skipping Data Mesh==" fi - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: "sfmc_datamesh" waitFor: ["sfmc_deploy"] script: | #!/usr/bin/env bash set -e _DEPLOY_DATA_MESH_=$(jq -r ."deployDataMesh" ${_CONFIG_FILE}) _DEPLOY_SFMC_=$(jq -r ."marketing.deploySFMC" ${_CONFIG_FILE}) if [[ ${_DEPLOY_DATA_MESH_} == "true" && \ ${_DEPLOY_SFMC_} == "true" ]]; then python3 src/common/data_mesh/deploy_data_mesh.py \ --config-file ${_CONFIG_FILE} \ --tag-template-directories src/SFMC/config/tag_templates \ --policy-directories src/SFMC/config/policy_taxonomies \ --lake-directories src/SFMC/config/lakes \ --annotation-directories \ src/SFMC/config/annotations/reporting else echo "==Skipping Data Mesh==" fi - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: "dv360_datamesh" waitFor: ["dv360_deploy"] script: | #!/usr/bin/env bash set -e _DEPLOY_DATA_MESH_=$(jq -r ."deployDataMesh" ${_CONFIG_FILE}) _DEPLOY_DV360_=$(jq -r ."marketing.deployDV360" ${_CONFIG_FILE}) if [[ ${_DEPLOY_DATA_MESH_} == "true" && \ ${_DEPLOY_DV360_} == "true" ]]; then python3 src/common/data_mesh/deploy_data_mesh.py \ --config-file ${_CONFIG_FILE} \ --tag-template-directories src/DV360/config/tag_templates \ --policy-directories src/DV360/config/policy_taxonomies \ --lake-directories src/DV360/config/lakes \ --annotation-directories \ src/DV360/config/annotations/reporting else echo "==Skipping Data Mesh==" fi - name: "gcr.io/kittycorn-public/deploy-kittycorn:v2.0" id: "ga4_datamesh" waitFor: ["ga4_deploy"] script: | #!/usr/bin/env bash set -e _DEPLOY_DATA_MESH_=$(jq -r ."deployDataMesh" ${_CONFIG_FILE}) _DEPLOY_GA4_=$(jq -r ."marketing.deployGA4" ${_CONFIG_FILE}) if [[ ${_DEPLOY_DATA_MESH_} == "true" && \ ${_DEPLOY_GA4_} == "true" ]]; then python3 src/common/data_mesh/deploy_data_mesh.py \ --config-file ${_CONFIG_FILE} \ --tag-template-directories src/GA4/config/tag_templates \ --policy-directories src/GA4/config/policy_taxonomies \ --lake-directories src/GA4/config/lakes \ --annotation-directories \ src/GA4/config/annotations/reporting else echo "==Skipping Data Mesh==" fi logsBucket: gs://${_GCS_LOGS_BUCKET} serviceAccount: "${_BUILD_ACCOUNT}" substitutions: _CONFIG_FILE: config/config.json options: substitution_option: ALLOW_LOOSE automapSubstitutions: true pool: name: "${_WORKER_POOL_NAME}"