build/int.cloudbuild.yaml (99 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 # # http://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. --- timeout: 9000s steps: - id: create_ephemeral_test_project name: "${_BUILDER_IMAGE_NAME}:${_BUILDER_IMAGE_TAG}" entrypoint: /bin/bash args: - "-e" - "-x" - "-c" - >- # folded text - replace newlines with spaces - each command needs to be separated by ';' gcloud projects create ${_TEST_PROJECT_ID} --folder ${_FOLDER_ID} ; sleep 10 ; trap "gcloud projects delete ${_TEST_PROJECT_ID} --quiet " ERR ; gcloud billing projects link ${_TEST_PROJECT_ID} --billing-account=${_BILLING_ACCOUNT} ; - id: run_script_pre_tf_setup name: "${_BUILDER_IMAGE_NAME}:${_BUILDER_IMAGE_TAG}" entrypoint: /bin/bash args: - "-x" - "-c" - >- # folded text - replace newlines with spaces - each command needs to be separated by ';' export PROJECT_ID=${_TEST_PROJECT_ID}; sample-deployments/composer-orchestrated-process/scripts/pre_tf_setup.sh; env: - "REGION=${_REGION}" - "IAP_ADMIN_ACCOUNT=${_IAP_SUPPORT_EMAIL}" - id: deploy_infrastructure_ name: "${_BUILDER_IMAGE_NAME}:${_BUILDER_IMAGE_TAG}" args: - "-e" - "-x" - "-c" - >- export PROJECT_ID=${_TEST_PROJECT_ID}; gcloud config set auth/impersonate_service_account ${_DEPLOYER_SA}; (cd build/test && make infra-test); gcloud config unset auth/impersonate_service_account; entrypoint: /bin/bash env: - "REGION=${_REGION}" - "DOC_AI_LOCATION=${_DOC_AI_LOCATION}" - "VERTEX_AI_DATA_STORE_REGION=${_VERTEX_AI_DATA_STORE_REGION}" - "IAP_ACCESS_DOMAINS=${_IAP_ACCESS_DOMAINS}" - "WEB_UI_DOMAINS=${_WEB_UI_DOMAINS}" - "GCLOUD_TF_DOWNLOAD=never" - "CUSTOM_CLASSIFIER_ID=${_CUSTOM_CLASSIFIER_ID}" - "GOOGLE_IMPERSONATE_SERVICE_ACCOUNT=${_DEPLOYER_SA}" - id: prepare_functional_tests name: "${_BUILDER_IMAGE_NAME}:${_BUILDER_IMAGE_TAG}" args: - "-e" - "-x" - "-c" - >- echo "ingest test documents..."; build/test/helpers/ingest_test_docs.sh; echo "grant IAM role for pretrained classifier in different project..." ; build/test/helpers/enable_docai_sa.sh; entrypoint: /bin/bash env: - "CICD_PROJECT_ID=${_CICD_PROJECT_ID}" - "TEST_PROJECT_ID=${_TEST_PROJECT_ID}" - id: do_functional_tests_on_dag name: "${_BUILDER_IMAGE_NAME}:${_BUILDER_IMAGE_TAG}" args: - "-e" - "-c" - >- export PROJECT_ID=${_TEST_PROJECT_ID}; (cd /workspace/build/test && make dag-test); entrypoint: /bin/bash env: - "LOCATION=${_REGION}" - "COMPOSER_ENV_NAME=dpu-composer" - "DAG_ID=run_docs_processing" - id: cleanup name: "${_BUILDER_IMAGE_NAME}:${_BUILDER_IMAGE_TAG}" args: - "-e" - "-x" - "-c" - >- gcloud projects delete ${_TEST_PROJECT_ID} --quiet entrypoint: /bin/bash tags: - "ci" - "integration" options: logging: CLOUD_LOGGING_ONLY substitutions: _TEST_PROJECT_ID: "eks-int-${BUILD_ID:0:8}" _CICD_PROJECT_ID: ${PROJECT_ID} _DEPLOYER_SA: "deployer@${_TEST_PROJECT_ID}.iam.gserviceaccount.com" _REGION: "us-central1" _DOC_AI_LOCATION: "us" _VERTEX_AI_DATA_STORE_REGION: "us" _BUILDER_IMAGE_NAME: "us-central1-docker.pkg.dev/${PROJECT_ID}/ci/test-builder" _BUILDER_IMAGE_TAG: "1.1.0" # The following subsitutions must be passed by the Cloud Build trigger: # _BILLING_ACCOUNT # _FOLDER_ID # _IAP_ACCESS_DOMAINS # _IAP_SUPPORT_EMAIL # _WEB_UI_DOMAINS # _CUSTOM_CLASSIFIER_ID # Note that ${PROJECT_ID} is always the project running the build, distinct from _TEST_PROJECT_ID where test resources are deployed # ${PROJECT_ID} cannot be overwritten with env substitution, so it requires an extra command in each step `export PROJECT_ID=${_TEST_PROJECT_ID}`