| --- |
| # ---------------------------------------------------------------------------- |
| # |
| # *** AUTO GENERATED CODE *** Type: MMv1 *** |
| # |
| # ---------------------------------------------------------------------------- |
| # |
| # This file is automatically generated by Magic Modules and manual |
| # changes will be clobbered when the file is regenerated. |
| # |
| # Please read more about how to change this file in |
| # .github/CONTRIBUTING.md. |
| # |
| # ---------------------------------------------------------------------------- |
| subcategory: "Cloud Build" |
| description: |- |
| Configuration for an automated build in response to source repository changes. |
| --- |
| |
| # google\_cloudbuild\_trigger |
| |
| Configuration for an automated build in response to source repository changes. |
| |
| |
| To get more information about Trigger, see: |
| |
| * [API documentation](https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.triggers) |
| * How-to Guides |
| * [Automating builds using build triggers](https://cloud.google.com/cloud-build/docs/running-builds/automate-builds) |
| |
| ~> **Note:** You can retrieve the email of the Cloud Build Service Account used in jobs by using the `google_project_service_identity` resource. |
| |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=cloudbuild_trigger_filename&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Cloudbuild Trigger Filename |
| |
| |
| ```hcl |
| resource "google_cloudbuild_trigger" "filename-trigger" { |
| location = "us-central1" |
| |
| trigger_template { |
| branch_name = "main" |
| repo_name = "my-repo" |
| } |
| |
| substitutions = { |
| _FOO = "bar" |
| _BAZ = "qux" |
| } |
| |
| filename = "cloudbuild.yaml" |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=cloudbuild_trigger_build&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Cloudbuild Trigger Build |
| |
| |
| ```hcl |
| resource "google_cloudbuild_trigger" "build-trigger" { |
| name = "my-trigger" |
| location = "global" |
| |
| trigger_template { |
| branch_name = "main" |
| repo_name = "my-repo" |
| } |
| |
| build { |
| step { |
| name = "gcr.io/cloud-builders/gsutil" |
| args = ["cp", "gs://mybucket/remotefile.zip", "localfile.zip"] |
| timeout = "120s" |
| secret_env = ["MY_SECRET"] |
| } |
| |
| step { |
| name = "ubuntu" |
| script = "echo hello" # using script field |
| } |
| |
| source { |
| storage_source { |
| bucket = "mybucket" |
| object = "source_code.tar.gz" |
| } |
| } |
| tags = ["build", "newFeature"] |
| substitutions = { |
| _FOO = "bar" |
| _BAZ = "qux" |
| } |
| queue_ttl = "20s" |
| logs_bucket = "gs://mybucket/logs" |
| secret { |
| kms_key_name = "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name" |
| secret_env = { |
| PASSWORD = "ZW5jcnlwdGVkLXBhc3N3b3JkCg==" |
| } |
| } |
| available_secrets { |
| secret_manager { |
| env = "MY_SECRET" |
| version_name = "projects/myProject/secrets/mySecret/versions/latest" |
| } |
| } |
| artifacts { |
| images = ["gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA"] |
| objects { |
| location = "gs://bucket/path/to/somewhere/" |
| paths = ["path"] |
| } |
| |
| npm_packages { |
| package_path = "package.json" |
| repository = "https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo" |
| } |
| |
| python_packages { |
| paths = ["dist/*"] |
| repository = "https://us-west1-python.pkg.dev/myProject/quickstart-python-repo" |
| } |
| |
| maven_artifacts { |
| repository = "https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo" |
| path = "/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar" |
| artifact_id = "my-app" |
| group_id = "com.mycompany.app" |
| version = "1.0" |
| } |
| } |
| options { |
| source_provenance_hash = ["MD5"] |
| requested_verify_option = "VERIFIED" |
| machine_type = "N1_HIGHCPU_8" |
| disk_size_gb = 100 |
| substitution_option = "ALLOW_LOOSE" |
| dynamic_substitutions = true |
| log_streaming_option = "STREAM_OFF" |
| worker_pool = "pool" |
| logging = "LEGACY" |
| env = ["ekey = evalue"] |
| secret_env = ["secretenv = svalue"] |
| volumes { |
| name = "v1" |
| path = "v1" |
| } |
| } |
| } |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=cloudbuild_trigger_service_account&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Cloudbuild Trigger Service Account |
| |
| |
| ```hcl |
| data "google_project" "project" {} |
| |
| resource "google_cloudbuild_trigger" "service-account-trigger" { |
| trigger_template { |
| branch_name = "main" |
| repo_name = "my-repo" |
| } |
| |
| service_account = google_service_account.cloudbuild_service_account.id |
| filename = "cloudbuild.yaml" |
| depends_on = [ |
| google_project_iam_member.act_as, |
| google_project_iam_member.logs_writer |
| ] |
| } |
| |
| resource "google_service_account" "cloudbuild_service_account" { |
| account_id = "cloud-sa" |
| } |
| |
| resource "google_project_iam_member" "act_as" { |
| project = data.google_project.project.project_id |
| role = "roles/iam.serviceAccountUser" |
| member = "serviceAccount:${google_service_account.cloudbuild_service_account.email}" |
| } |
| |
| resource "google_project_iam_member" "logs_writer" { |
| project = data.google_project.project.project_id |
| role = "roles/logging.logWriter" |
| member = "serviceAccount:${google_service_account.cloudbuild_service_account.email}" |
| } |
| ``` |
| ## Example Usage - Cloudbuild Trigger Include Build Logs |
| |
| |
| ```hcl |
| resource "google_cloudbuild_trigger" "include-build-logs-trigger" { |
| location = "us-central1" |
| name = "include-build-logs-trigger" |
| filename = "cloudbuild.yaml" |
| |
| github { |
| owner = "hashicorp" |
| name = "terraform-provider-google-beta" |
| push { |
| branch = "^main$" |
| } |
| } |
| |
| include_build_logs = "INCLUDE_BUILD_LOGS_WITH_STATUS" |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=cloudbuild_trigger_pubsub_config&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Cloudbuild Trigger Pubsub Config |
| |
| |
| ```hcl |
| |
| resource "google_pubsub_topic" "mytopic" { |
| name = "my-topic" |
| } |
| |
| resource "google_cloudbuild_trigger" "pubsub-config-trigger" { |
| location = "us-central1" |
| name = "pubsub-trigger" |
| description = "acceptance test example pubsub build trigger" |
| |
| pubsub_config { |
| topic = google_pubsub_topic.mytopic.id |
| } |
| |
| source_to_build { |
| uri = "https://hashicorp/terraform-provider-google-beta" |
| ref = "refs/heads/main" |
| repo_type = "GITHUB" |
| } |
| |
| git_file_source { |
| path = "cloudbuild.yaml" |
| uri = "https://hashicorp/terraform-provider-google-beta" |
| revision = "refs/heads/main" |
| repo_type = "GITHUB" |
| } |
| |
| substitutions = { |
| _ACTION = "$(body.message.data.action)" |
| } |
| |
| filter = "_ACTION.matches('INSERT')" |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=cloudbuild_trigger_webhook_config&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Cloudbuild Trigger Webhook Config |
| |
| |
| ```hcl |
| |
| resource "google_secret_manager_secret" "webhook_trigger_secret_key" { |
| secret_id = "webhook-trigger-secret-key" |
| |
| replication { |
| user_managed { |
| replicas { |
| location = "us-central1" |
| } |
| } |
| } |
| } |
| |
| resource "google_secret_manager_secret_version" "webhook_trigger_secret_key_data" { |
| secret = google_secret_manager_secret.webhook_trigger_secret_key.id |
| |
| secret_data = "secretkeygoeshere" |
| } |
| |
| data "google_project" "project" {} |
| |
| data "google_iam_policy" "secret_accessor" { |
| binding { |
| role = "roles/secretmanager.secretAccessor" |
| members = [ |
| "serviceAccount:service-${data.google_project.project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com", |
| ] |
| } |
| } |
| |
| resource "google_secret_manager_secret_iam_policy" "policy" { |
| project = google_secret_manager_secret.webhook_trigger_secret_key.project |
| secret_id = google_secret_manager_secret.webhook_trigger_secret_key.secret_id |
| policy_data = data.google_iam_policy.secret_accessor.policy_data |
| } |
| |
| |
| resource "google_cloudbuild_trigger" "webhook-config-trigger" { |
| name = "webhook-trigger" |
| description = "acceptance test example webhook build trigger" |
| |
| webhook_config { |
| secret = google_secret_manager_secret_version.webhook_trigger_secret_key_data.id |
| } |
| |
| source_to_build { |
| uri = "https://hashicorp/terraform-provider-google-beta" |
| ref = "refs/heads/main" |
| repo_type = "GITHUB" |
| } |
| |
| git_file_source { |
| path = "cloudbuild.yaml" |
| uri = "https://hashicorp/terraform-provider-google-beta" |
| revision = "refs/heads/main" |
| repo_type = "GITHUB" |
| } |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=cloudbuild_trigger_manual&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Cloudbuild Trigger Manual |
| |
| |
| ```hcl |
| |
| resource "google_cloudbuild_trigger" "manual-trigger" { |
| name = "manual-trigger" |
| |
| source_to_build { |
| uri = "https://hashicorp/terraform-provider-google-beta" |
| ref = "refs/heads/main" |
| repo_type = "GITHUB" |
| } |
| |
| git_file_source { |
| path = "cloudbuild.yaml" |
| uri = "https://hashicorp/terraform-provider-google-beta" |
| revision = "refs/heads/main" |
| repo_type = "GITHUB" |
| } |
| |
| |
| // If this is set on a build, it will become pending when it is run, |
| // and will need to be explicitly approved to start. |
| approval_config { |
| approval_required = true |
| } |
| |
| |
| } |
| ``` |
| ## Example Usage - Cloudbuild Trigger Manual Github Enterprise |
| |
| |
| ```hcl |
| resource "google_cloudbuild_trigger" "manual-ghe-trigger" { |
| name = "" |
| |
| source_to_build { |
| uri = "https://hashicorp/terraform-provider-google-beta" |
| ref = "refs/heads/main" |
| repo_type = "GITHUB" |
| github_enterprise_config = "projects/myProject/locations/global/githubEnterpriseConfigs/configID" |
| } |
| |
| git_file_source { |
| path = "cloudbuild.yaml" |
| uri = "https://hashicorp/terraform-provider-google-beta" |
| revision = "refs/heads/main" |
| repo_type = "GITHUB" |
| github_enterprise_config = "projects/myProject/locations/global/githubEnterpriseConfigs/configID" |
| } |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=cloudbuild_trigger_manual_bitbucket_server&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Cloudbuild Trigger Manual Bitbucket Server |
| |
| |
| ```hcl |
| resource "google_cloudbuild_trigger" "manual-bitbucket-trigger" { |
| name = "terraform-manual-bbs-trigger" |
| |
| source_to_build { |
| uri = "https://bbs.com/scm/stag/test-repo.git" |
| ref = "refs/heads/main" |
| repo_type = "BITBUCKET_SERVER" |
| bitbucket_server_config = "projects/myProject/locations/global/bitbucketServerConfigs/configID" |
| } |
| |
| git_file_source { |
| path = "cloudbuild.yaml" |
| uri = "https://bbs.com/scm/stag/test-repo.git" |
| revision = "refs/heads/main" |
| repo_type = "BITBUCKET_SERVER" |
| bitbucket_server_config = "projects/myProject/locations/global/bitbucketServerConfigs/configID" |
| } |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=cloudbuild_trigger_repo&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Cloudbuild Trigger Repo |
| |
| |
| ```hcl |
| resource "google_cloudbuildv2_connection" "my-connection" { |
| location = "us-central1" |
| name = "my-connection" |
| |
| github_config { |
| app_installation_id = 123123 |
| authorizer_credential { |
| oauth_token_secret_version = "projects/my-project/secrets/github-pat-secret/versions/latest" |
| } |
| } |
| } |
| |
| resource "google_cloudbuildv2_repository" "my-repository" { |
| name = "my-repo" |
| parent_connection = google_cloudbuildv2_connection.my-connection.id |
| remote_uri = "https://github.com/myuser/my-repo.git" |
| } |
| |
| resource "google_cloudbuild_trigger" "repo-trigger" { |
| location = "us-central1" |
| |
| repository_event_config { |
| repository = google_cloudbuildv2_repository.my-repository.id |
| push { |
| branch = "feature-.*" |
| } |
| } |
| |
| filename = "cloudbuild.yaml" |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=cloudbuild_trigger_bitbucket_server_push&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Cloudbuild Trigger Bitbucket Server Push |
| |
| |
| ```hcl |
| resource "google_cloudbuild_trigger" "bbs-push-trigger" { |
| name = "bbs-push-trigger" |
| location = "us-central1" |
| |
| bitbucket_server_trigger_config { |
| repo_slug = "bbs-push-trigger" |
| project_key = "STAG" |
| bitbucket_server_config_resource = "projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig" |
| push { |
| tag = "^0.1.*" |
| invert_regex = true |
| } |
| } |
| |
| filename = "cloudbuild.yaml" |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=cloudbuild_trigger_bitbucket_server_pull_request&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Cloudbuild Trigger Bitbucket Server Pull Request |
| |
| |
| ```hcl |
| resource "google_cloudbuild_trigger" "bbs-pull-request-trigger" { |
| name = "ghe-trigger" |
| location = "us-central1" |
| |
| bitbucket_server_trigger_config { |
| repo_slug = "terraform-provider-google" |
| project_key = "STAG" |
| bitbucket_server_config_resource = "projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig" |
| pull_request { |
| branch = "^master$" |
| invert_regex = false |
| comment_control = "COMMENTS_ENABLED" |
| } |
| } |
| |
| filename = "cloudbuild.yaml" |
| } |
| ``` |
| ## Example Usage - Cloudbuild Trigger Github Enterprise |
| |
| |
| ```hcl |
| resource "google_cloudbuild_trigger" "ghe-trigger" { |
| name = "ghe-trigger" |
| location = "us-central1" |
| |
| github { |
| owner = "hashicorp" |
| name = "terraform-provider-google" |
| push { |
| branch = "^main$" |
| } |
| enterprise_config_resource_name = "projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID" |
| } |
| |
| filename = "cloudbuild.yaml" |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=cloudbuild_trigger_allow_failure&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Cloudbuild Trigger Allow Failure |
| |
| |
| ```hcl |
| resource "google_cloudbuild_trigger" "allow-failure-trigger" { |
| name = "my-trigger" |
| location = "global" |
| |
| trigger_template { |
| branch_name = "main" |
| repo_name = "my-repo" |
| } |
| |
| build { |
| step { |
| name = "ubuntu" |
| args = ["-c", "exit 1"] |
| allow_failure = true |
| } |
| |
| source { |
| storage_source { |
| bucket = "mybucket" |
| object = "source_code.tar.gz" |
| } |
| } |
| tags = ["build", "newFeature"] |
| substitutions = { |
| _FOO = "bar" |
| _BAZ = "qux" |
| } |
| queue_ttl = "20s" |
| logs_bucket = "gs://mybucket/logs" |
| secret { |
| kms_key_name = "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name" |
| secret_env = { |
| PASSWORD = "ZW5jcnlwdGVkLXBhc3N3b3JkCg==" |
| } |
| } |
| available_secrets { |
| secret_manager { |
| env = "MY_SECRET" |
| version_name = "projects/myProject/secrets/mySecret/versions/latest" |
| } |
| } |
| artifacts { |
| images = ["gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA"] |
| objects { |
| location = "gs://bucket/path/to/somewhere/" |
| paths = ["path"] |
| } |
| } |
| options { |
| source_provenance_hash = ["MD5"] |
| requested_verify_option = "VERIFIED" |
| machine_type = "N1_HIGHCPU_8" |
| disk_size_gb = 100 |
| substitution_option = "ALLOW_LOOSE" |
| dynamic_substitutions = true |
| log_streaming_option = "STREAM_OFF" |
| worker_pool = "pool" |
| logging = "LEGACY" |
| env = ["ekey = evalue"] |
| secret_env = ["secretenv = svalue"] |
| volumes { |
| name = "v1" |
| path = "v1" |
| } |
| } |
| } |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=cloudbuild_trigger_allow_exit_codes&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Cloudbuild Trigger Allow Exit Codes |
| |
| |
| ```hcl |
| resource "google_cloudbuild_trigger" "allow-exit-codes-trigger" { |
| name = "my-trigger" |
| location = "global" |
| |
| trigger_template { |
| branch_name = "main" |
| repo_name = "my-repo" |
| } |
| |
| build { |
| step { |
| name = "ubuntu" |
| args = ["-c", "exit 1"] |
| allow_exit_codes = [1,3] |
| } |
| |
| source { |
| storage_source { |
| bucket = "mybucket" |
| object = "source_code.tar.gz" |
| } |
| } |
| tags = ["build", "newFeature"] |
| substitutions = { |
| _FOO = "bar" |
| _BAZ = "qux" |
| } |
| queue_ttl = "20s" |
| logs_bucket = "gs://mybucket/logs" |
| secret { |
| kms_key_name = "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name" |
| secret_env = { |
| PASSWORD = "ZW5jcnlwdGVkLXBhc3N3b3JkCg==" |
| } |
| } |
| available_secrets { |
| secret_manager { |
| env = "MY_SECRET" |
| version_name = "projects/myProject/secrets/mySecret/versions/latest" |
| } |
| } |
| artifacts { |
| images = ["gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA"] |
| objects { |
| location = "gs://bucket/path/to/somewhere/" |
| paths = ["path"] |
| } |
| } |
| options { |
| source_provenance_hash = ["MD5"] |
| requested_verify_option = "VERIFIED" |
| machine_type = "N1_HIGHCPU_8" |
| disk_size_gb = 100 |
| substitution_option = "ALLOW_LOOSE" |
| dynamic_substitutions = true |
| log_streaming_option = "STREAM_OFF" |
| worker_pool = "pool" |
| logging = "LEGACY" |
| env = ["ekey = evalue"] |
| secret_env = ["secretenv = svalue"] |
| volumes { |
| name = "v1" |
| path = "v1" |
| } |
| } |
| } |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=cloudbuild_trigger_pubsub_with_repo&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Cloudbuild Trigger Pubsub With Repo |
| |
| |
| ```hcl |
| resource "google_cloudbuildv2_connection" "my-connection" { |
| location = "us-central1" |
| name = "my-connection" |
| |
| github_config { |
| app_installation_id = 123123 |
| authorizer_credential { |
| oauth_token_secret_version = "projects/my-project/secrets/github-pat-secret/versions/latest" |
| } |
| } |
| } |
| |
| resource "google_cloudbuildv2_repository" "my-repository" { |
| name = "my-repo" |
| parent_connection = google_cloudbuildv2_connection.my-connection.id |
| remote_uri = "https://github.com/myuser/my-repo.git" |
| } |
| |
| resource "google_pubsub_topic" "mytopic" { |
| name = "my-topic" |
| } |
| |
| resource "google_cloudbuild_trigger" "pubsub-with-repo-trigger" { |
| name = "pubsub-with-repo-trigger" |
| location = "us-central1" |
| |
| pubsub_config { |
| topic = google_pubsub_topic.mytopic.id |
| } |
| source_to_build { |
| repository = google_cloudbuildv2_repository.my-repository.id |
| ref = "refs/heads/main" |
| repo_type = "GITHUB" |
| } |
| git_file_source { |
| path = "cloudbuild.yaml" |
| repository = google_cloudbuildv2_repository.my-repository.id |
| revision = "refs/heads/main" |
| repo_type = "GITHUB" |
| } |
| } |
| ``` |
| |
| ## Argument Reference |
| |
| The following arguments are supported: |
| |
| |
| |
| - - - |
| |
| |
| * `name` - |
| (Optional) |
| Name of the trigger. Must be unique within the project. |
| |
| * `description` - |
| (Optional) |
| Human-readable description of the trigger. |
| |
| * `tags` - |
| (Optional) |
| Tags for annotation of a BuildTrigger |
| |
| * `disabled` - |
| (Optional) |
| Whether the trigger is disabled or not. If true, the trigger will never result in a build. |
| |
| * `substitutions` - |
| (Optional) |
| Substitutions data for Build resource. |
| |
| * `service_account` - |
| (Optional) |
| The service account used for all user-controlled operations including |
| triggers.patch, triggers.run, builds.create, and builds.cancel. |
| If no service account is set, then the standard Cloud Build service account |
| ([PROJECT_NUM]@system.gserviceaccount.com) will be used instead. |
| Format: projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT_ID_OR_EMAIL} |
| |
| * `include_build_logs` - |
| (Optional) |
| Build logs will be sent back to GitHub as part of the checkrun |
| result. Values can be INCLUDE_BUILD_LOGS_UNSPECIFIED or |
| INCLUDE_BUILD_LOGS_WITH_STATUS |
| Possible values are: `INCLUDE_BUILD_LOGS_UNSPECIFIED`, `INCLUDE_BUILD_LOGS_WITH_STATUS`. |
| |
| * `filename` - |
| (Optional) |
| Path, from the source root, to a file whose contents is used for the template. |
| Either a filename or build template must be provided. Set this only when using trigger_template or github. |
| When using Pub/Sub, Webhook or Manual set the file name using git_file_source instead. |
| |
| * `filter` - |
| (Optional) |
| A Common Expression Language string. Used only with Pub/Sub and Webhook. |
| |
| * `git_file_source` - |
| (Optional) |
| The file source describing the local or remote Build template. |
| Structure is [documented below](#nested_git_file_source). |
| |
| * `repository_event_config` - |
| (Optional) |
| The configuration of a trigger that creates a build whenever an event from Repo API is received. |
| Structure is [documented below](#nested_repository_event_config). |
| |
| * `source_to_build` - |
| (Optional) |
| The repo and ref of the repository from which to build. |
| This field is used only for those triggers that do not respond to SCM events. |
| Triggers that respond to such events build source at whatever commit caused the event. |
| This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers. |
| One of `trigger_template`, `github`, `pubsub_config` `webhook_config` or `source_to_build` must be provided. |
| Structure is [documented below](#nested_source_to_build). |
| |
| * `ignored_files` - |
| (Optional) |
| ignoredFiles and includedFiles are file glob matches using https://golang.org/pkg/path/filepath/#Match |
| extended with support for `**`. |
| If ignoredFiles and changed files are both empty, then they are not |
| used to determine whether or not to trigger a build. |
| If ignoredFiles is not empty, then we ignore any files that match any |
| of the ignored_file globs. If the change has no files that are outside |
| of the ignoredFiles globs, then we do not trigger a build. |
| |
| * `included_files` - |
| (Optional) |
| ignoredFiles and includedFiles are file glob matches using https://golang.org/pkg/path/filepath/#Match |
| extended with support for `**`. |
| If any of the files altered in the commit pass the ignoredFiles filter |
| and includedFiles is empty, then as far as this filter is concerned, we |
| should trigger the build. |
| If any of the files altered in the commit pass the ignoredFiles filter |
| and includedFiles is not empty, then we make sure that at least one of |
| those files matches a includedFiles glob. If not, then we do not trigger |
| a build. |
| |
| * `trigger_template` - |
| (Optional) |
| Template describing the types of source changes to trigger a build. |
| Branch and tag names in trigger templates are interpreted as regular |
| expressions. Any branch or tag change that matches that regular |
| expression will trigger a build. |
| One of `trigger_template`, `github`, `pubsub_config`, `webhook_config` or `source_to_build` must be provided. |
| Structure is [documented below](#nested_trigger_template). |
| |
| * `github` - |
| (Optional) |
| Describes the configuration of a trigger that creates a build whenever a GitHub event is received. |
| One of `trigger_template`, `github`, `pubsub_config` or `webhook_config` must be provided. |
| Structure is [documented below](#nested_github). |
| |
| * `bitbucket_server_trigger_config` - |
| (Optional) |
| BitbucketServerTriggerConfig describes the configuration of a trigger that creates a build whenever a Bitbucket Server event is received. |
| Structure is [documented below](#nested_bitbucket_server_trigger_config). |
| |
| * `pubsub_config` - |
| (Optional) |
| PubsubConfig describes the configuration of a trigger that creates |
| a build whenever a Pub/Sub message is published. |
| One of `trigger_template`, `github`, `pubsub_config` `webhook_config` or `source_to_build` must be provided. |
| Structure is [documented below](#nested_pubsub_config). |
| |
| * `webhook_config` - |
| (Optional) |
| WebhookConfig describes the configuration of a trigger that creates |
| a build whenever a webhook is sent to a trigger's webhook URL. |
| One of `trigger_template`, `github`, `pubsub_config` `webhook_config` or `source_to_build` must be provided. |
| Structure is [documented below](#nested_webhook_config). |
| |
| * `approval_config` - |
| (Optional) |
| Configuration for manual approval to start a build invocation of this BuildTrigger. |
| Builds created by this trigger will require approval before they execute. |
| Any user with a Cloud Build Approver role for the project can approve a build. |
| Structure is [documented below](#nested_approval_config). |
| |
| * `build` - |
| (Optional) |
| Contents of the build template. Either a filename or build template must be provided. |
| Structure is [documented below](#nested_build). |
| |
| * `location` - |
| (Optional) |
| The [Cloud Build location](https://cloud.google.com/build/docs/locations) for the trigger. |
| If not specified, "global" is used. |
| |
| * `project` - (Optional) The ID of the project in which the resource belongs. |
| If it is not provided, the provider project is used. |
| |
| |
| <a name="nested_git_file_source"></a>The `git_file_source` block supports: |
| |
| * `path` - |
| (Required) |
| The path of the file, with the repo root as the root of the path. |
| |
| * `uri` - |
| (Optional) |
| The URI of the repo (optional). If unspecified, the repo from which the trigger |
| invocation originated is assumed to be the repo from which to read the specified path. |
| |
| * `repository` - |
| (Optional) |
| The fully qualified resource name of the Repo API repository. The fully qualified resource name of the Repo API repository. |
| If unspecified, the repo from which the trigger invocation originated is assumed to be the repo from which to read the specified path. |
| |
| * `repo_type` - |
| (Required) |
| The type of the repo, since it may not be explicit from the repo field (e.g from a URL). |
| Values can be UNKNOWN, CLOUD_SOURCE_REPOSITORIES, GITHUB, BITBUCKET_SERVER |
| Possible values are: `UNKNOWN`, `CLOUD_SOURCE_REPOSITORIES`, `GITHUB`, `BITBUCKET_SERVER`. |
| |
| * `revision` - |
| (Optional) |
| The branch, tag, arbitrary ref, or SHA version of the repo to use when resolving the |
| filename (optional). This field respects the same syntax/resolution as described here: https://git-scm.com/docs/gitrevisions |
| If unspecified, the revision from which the trigger invocation originated is assumed to be the revision from which to read the specified path. |
| |
| * `github_enterprise_config` - |
| (Optional) |
| The full resource name of the github enterprise config. |
| Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. |
| |
| * `bitbucket_server_config` - |
| (Optional) |
| The full resource name of the bitbucket server config. |
| Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. |
| |
| <a name="nested_repository_event_config"></a>The `repository_event_config` block supports: |
| |
| * `repository` - |
| (Optional) |
| The resource name of the Repo API resource. |
| |
| * `pull_request` - |
| (Optional) |
| Contains filter properties for matching Pull Requests. |
| Structure is [documented below](#nested_pull_request). |
| |
| * `push` - |
| (Optional) |
| Contains filter properties for matching git pushes. |
| Structure is [documented below](#nested_push). |
| |
| |
| <a name="nested_pull_request"></a>The `pull_request` block supports: |
| |
| * `branch` - |
| (Optional) |
| Regex of branches to match. |
| The syntax of the regular expressions accepted is the syntax accepted by |
| RE2 and described at https://github.com/google/re2/wiki/Syntax |
| |
| * `invert_regex` - |
| (Optional) |
| If true, branches that do NOT match the git_ref will trigger a build. |
| |
| * `comment_control` - |
| (Optional) |
| Configure builds to run whether a repository owner or collaborator need to comment `/gcbrun`. |
| Possible values are: `COMMENTS_DISABLED`, `COMMENTS_ENABLED`, `COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY`. |
| |
| <a name="nested_push"></a>The `push` block supports: |
| |
| * `branch` - |
| (Optional) |
| Regex of branches to match. |
| The syntax of the regular expressions accepted is the syntax accepted by |
| RE2 and described at https://github.com/google/re2/wiki/Syntax |
| |
| * `tag` - |
| (Optional) |
| Regex of tags to match. |
| The syntax of the regular expressions accepted is the syntax accepted by |
| RE2 and described at https://github.com/google/re2/wiki/Syntax |
| |
| * `invert_regex` - |
| (Optional) |
| If true, only trigger a build if the revision regex does NOT match the git_ref regex. |
| |
| <a name="nested_source_to_build"></a>The `source_to_build` block supports: |
| |
| * `uri` - |
| (Optional) |
| The URI of the repo. |
| |
| * `repository` - |
| (Optional) |
| The qualified resource name of the Repo API repository. |
| Either uri or repository can be specified and is required. |
| |
| * `ref` - |
| (Required) |
| The branch or tag to use. Must start with "refs/" (required). |
| |
| * `repo_type` - |
| (Required) |
| The type of the repo, since it may not be explicit from the repo field (e.g from a URL). |
| Values can be UNKNOWN, CLOUD_SOURCE_REPOSITORIES, GITHUB, BITBUCKET_SERVER |
| Possible values are: `UNKNOWN`, `CLOUD_SOURCE_REPOSITORIES`, `GITHUB`, `BITBUCKET_SERVER`. |
| |
| * `github_enterprise_config` - |
| (Optional) |
| The full resource name of the github enterprise config. |
| Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. |
| |
| * `bitbucket_server_config` - |
| (Optional) |
| The full resource name of the bitbucket server config. |
| Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. |
| |
| <a name="nested_trigger_template"></a>The `trigger_template` block supports: |
| |
| * `project_id` - |
| (Optional) |
| ID of the project that owns the Cloud Source Repository. If |
| omitted, the project ID requesting the build is assumed. |
| |
| * `repo_name` - |
| (Optional) |
| Name of the Cloud Source Repository. If omitted, the name "default" is assumed. |
| |
| * `dir` - |
| (Optional) |
| Directory, relative to the source root, in which to run the build. |
| This must be a relative path. If a step's dir is specified and |
| is an absolute path, this value is ignored for that step's |
| execution. |
| |
| * `invert_regex` - |
| (Optional) |
| Only trigger a build if the revision regex does NOT match the revision regex. |
| |
| * `branch_name` - |
| (Optional) |
| Name of the branch to build. Exactly one a of branch name, tag, or commit SHA must be provided. |
| This field is a regular expression. |
| |
| * `tag_name` - |
| (Optional) |
| Name of the tag to build. Exactly one of a branch name, tag, or commit SHA must be provided. |
| This field is a regular expression. |
| |
| * `commit_sha` - |
| (Optional) |
| Explicit commit SHA to build. Exactly one of a branch name, tag, or commit SHA must be provided. |
| |
| <a name="nested_github"></a>The `github` block supports: |
| |
| * `owner` - |
| (Optional) |
| Owner of the repository. For example: The owner for |
| https://github.com/googlecloudplatform/cloud-builders is "googlecloudplatform". |
| |
| * `name` - |
| (Optional) |
| Name of the repository. For example: The name for |
| https://github.com/googlecloudplatform/cloud-builders is "cloud-builders". |
| |
| * `pull_request` - |
| (Optional) |
| filter to match changes in pull requests. Specify only one of `pull_request` or `push`. |
| Structure is [documented below](#nested_pull_request). |
| |
| * `push` - |
| (Optional) |
| filter to match changes in refs, like branches or tags. Specify only one of `pull_request` or `push`. |
| Structure is [documented below](#nested_push). |
| |
| * `enterprise_config_resource_name` - |
| (Optional) |
| The resource name of the github enterprise config that should be applied to this installation. |
| For example: "projects/{$projectId}/locations/{$locationId}/githubEnterpriseConfigs/{$configId}" |
| |
| |
| <a name="nested_pull_request"></a>The `pull_request` block supports: |
| |
| * `branch` - |
| (Required) |
| Regex of branches to match. |
| |
| * `comment_control` - |
| (Optional) |
| Whether to block builds on a "/gcbrun" comment from a repository owner or collaborator. |
| Possible values are: `COMMENTS_DISABLED`, `COMMENTS_ENABLED`, `COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY`. |
| |
| * `invert_regex` - |
| (Optional) |
| If true, branches that do NOT match the git_ref will trigger a build. |
| |
| <a name="nested_push"></a>The `push` block supports: |
| |
| * `invert_regex` - |
| (Optional) |
| When true, only trigger a build if the revision regex does NOT match the git_ref regex. |
| |
| * `branch` - |
| (Optional) |
| Regex of branches to match. Specify only one of branch or tag. |
| |
| * `tag` - |
| (Optional) |
| Regex of tags to match. Specify only one of branch or tag. |
| |
| <a name="nested_bitbucket_server_trigger_config"></a>The `bitbucket_server_trigger_config` block supports: |
| |
| * `repo_slug` - |
| (Required) |
| Slug of the repository. A repository slug is a URL-friendly version of a repository name, automatically generated by Bitbucket for use in the URL. |
| For example, if the repository name is 'test repo', in the URL it would become 'test-repo' as in https://mybitbucket.server/projects/TEST/repos/test-repo. |
| |
| * `project_key` - |
| (Required) |
| Key of the project that the repo is in. For example: The key for https://mybitbucket.server/projects/TEST/repos/test-repo is "TEST". |
| |
| * `bitbucket_server_config_resource` - |
| (Required) |
| The Bitbucket server config resource that this trigger config maps to. |
| |
| * `pull_request` - |
| (Optional) |
| Filter to match changes in pull requests. |
| Structure is [documented below](#nested_pull_request). |
| |
| * `push` - |
| (Optional) |
| Filter to match changes in refs like branches, tags. |
| Structure is [documented below](#nested_push). |
| |
| |
| <a name="nested_pull_request"></a>The `pull_request` block supports: |
| |
| * `branch` - |
| (Required) |
| Regex of branches to match. |
| The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax |
| |
| * `comment_control` - |
| (Optional) |
| Configure builds to run whether a repository owner or collaborator need to comment /gcbrun. |
| Possible values are: `COMMENTS_DISABLED`, `COMMENTS_ENABLED`, `COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY`. |
| |
| * `invert_regex` - |
| (Optional) |
| If true, branches that do NOT match the git_ref will trigger a build. |
| |
| <a name="nested_push"></a>The `push` block supports: |
| |
| * `invert_regex` - |
| (Optional) |
| When true, only trigger a build if the revision regex does NOT match the gitRef regex. |
| |
| * `branch` - |
| (Optional) |
| Regex of branches to match. Specify only one of branch or tag. |
| |
| * `tag` - |
| (Optional) |
| Regex of tags to match. Specify only one of branch or tag. |
| |
| <a name="nested_pubsub_config"></a>The `pubsub_config` block supports: |
| |
| * `subscription` - |
| (Output) |
| Output only. Name of the subscription. |
| |
| * `topic` - |
| (Required) |
| The name of the topic from which this subscription is receiving messages. |
| |
| * `service_account_email` - |
| (Optional) |
| Service account that will make the push request. |
| |
| * `state` - |
| (Output) |
| Potential issues with the underlying Pub/Sub subscription configuration. |
| Only populated on get requests. |
| |
| <a name="nested_webhook_config"></a>The `webhook_config` block supports: |
| |
| * `secret` - |
| (Required) |
| Resource name for the secret required as a URL parameter. |
| |
| * `state` - |
| (Output) |
| Potential issues with the underlying Pub/Sub subscription configuration. |
| Only populated on get requests. |
| |
| <a name="nested_approval_config"></a>The `approval_config` block supports: |
| |
| * `approval_required` - |
| (Optional) |
| Whether or not approval is needed. If this is set on a build, it will become pending when run, |
| and will need to be explicitly approved to start. |
| |
| <a name="nested_build"></a>The `build` block supports: |
| |
| * `source` - |
| (Optional) |
| The location of the source files to build. |
| One of `storageSource` or `repoSource` must be provided. |
| Structure is [documented below](#nested_source). |
| |
| * `tags` - |
| (Optional) |
| Tags for annotation of a Build. These are not docker tags. |
| |
| * `images` - |
| (Optional) |
| A list of images to be pushed upon the successful completion of all build steps. |
| The images are pushed using the builder service account's credentials. |
| The digests of the pushed images will be stored in the Build resource's results field. |
| If any of the images fail to be pushed, the build status is marked FAILURE. |
| |
| * `substitutions` - |
| (Optional) |
| Substitutions data for Build resource. |
| |
| * `queue_ttl` - |
| (Optional) |
| TTL in queue for this build. If provided and the build is enqueued longer than this value, |
| the build will expire and the build status will be EXPIRED. |
| The TTL starts ticking from createTime. |
| A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". |
| |
| * `logs_bucket` - |
| (Optional) |
| Google Cloud Storage bucket where logs should be written. |
| Logs file names will be of the format ${logsBucket}/log-${build_id}.txt. |
| |
| * `timeout` - |
| (Optional) |
| Amount of time that this build should be allowed to run, to second granularity. |
| If this amount of time elapses, work on the build will cease and the build status will be TIMEOUT. |
| This timeout must be equal to or greater than the sum of the timeouts for build steps within the build. |
| The expected format is the number of seconds followed by s. |
| Default time is ten minutes (600s). |
| |
| * `secret` - |
| (Optional) |
| Secrets to decrypt using Cloud Key Management Service. |
| Structure is [documented below](#nested_secret). |
| |
| * `available_secrets` - |
| (Optional) |
| Secrets and secret environment variables. |
| Structure is [documented below](#nested_available_secrets). |
| |
| * `step` - |
| (Required) |
| The operations to be performed on the workspace. |
| Structure is [documented below](#nested_step). |
| |
| * `artifacts` - |
| (Optional) |
| Artifacts produced by the build that should be uploaded upon successful completion of all build steps. |
| Structure is [documented below](#nested_artifacts). |
| |
| * `options` - |
| (Optional) |
| Special options for this build. |
| Structure is [documented below](#nested_options). |
| |
| |
| <a name="nested_source"></a>The `source` block supports: |
| |
| * `storage_source` - |
| (Optional) |
| Location of the source in an archive file in Google Cloud Storage. |
| Structure is [documented below](#nested_storage_source). |
| |
| * `repo_source` - |
| (Optional) |
| Location of the source in a Google Cloud Source Repository. |
| Structure is [documented below](#nested_repo_source). |
| |
| |
| <a name="nested_storage_source"></a>The `storage_source` block supports: |
| |
| * `bucket` - |
| (Required) |
| Google Cloud Storage bucket containing the source. |
| |
| * `object` - |
| (Required) |
| Google Cloud Storage object containing the source. |
| This object must be a gzipped archive file (.tar.gz) containing source to build. |
| |
| * `generation` - |
| (Optional) |
| Google Cloud Storage generation for the object. |
| If the generation is omitted, the latest generation will be used |
| |
| <a name="nested_repo_source"></a>The `repo_source` block supports: |
| |
| * `project_id` - |
| (Optional) |
| ID of the project that owns the Cloud Source Repository. |
| If omitted, the project ID requesting the build is assumed. |
| |
| * `repo_name` - |
| (Required) |
| Name of the Cloud Source Repository. |
| |
| * `dir` - |
| (Optional) |
| Directory, relative to the source root, in which to run the build. |
| This must be a relative path. If a step's dir is specified and is an absolute path, |
| this value is ignored for that step's execution. |
| |
| * `invert_regex` - |
| (Optional) |
| Only trigger a build if the revision regex does NOT match the revision regex. |
| |
| * `substitutions` - |
| (Optional) |
| Substitutions to use in a triggered build. Should only be used with triggers.run |
| |
| * `branch_name` - |
| (Optional) |
| Regex matching branches to build. Exactly one a of branch name, tag, or commit SHA must be provided. |
| The syntax of the regular expressions accepted is the syntax accepted by RE2 and |
| described at https://github.com/google/re2/wiki/Syntax |
| |
| * `tag_name` - |
| (Optional) |
| Regex matching tags to build. Exactly one a of branch name, tag, or commit SHA must be provided. |
| The syntax of the regular expressions accepted is the syntax accepted by RE2 and |
| described at https://github.com/google/re2/wiki/Syntax |
| |
| * `commit_sha` - |
| (Optional) |
| Explicit commit SHA to build. Exactly one a of branch name, tag, or commit SHA must be provided. |
| |
| <a name="nested_secret"></a>The `secret` block supports: |
| |
| * `kms_key_name` - |
| (Required) |
| Cloud KMS key name to use to decrypt these envs. |
| |
| * `secret_env` - |
| (Optional) |
| Map of environment variable name to its encrypted value. |
| Secret environment variables must be unique across all of a build's secrets, |
| and must be used by at least one build step. Values can be at most 64 KB in size. |
| There can be at most 100 secret values across all of a build's secrets. |
| |
| <a name="nested_available_secrets"></a>The `available_secrets` block supports: |
| |
| * `secret_manager` - |
| (Required) |
| Pairs a secret environment variable with a SecretVersion in Secret Manager. |
| Structure is [documented below](#nested_secret_manager). |
| |
| |
| <a name="nested_secret_manager"></a>The `secret_manager` block supports: |
| |
| * `version_name` - |
| (Required) |
| Resource name of the SecretVersion. In format: projects/*/secrets/*/versions/* |
| |
| * `env` - |
| (Required) |
| Environment variable name to associate with the secret. Secret environment |
| variables must be unique across all of a build's secrets, and must be used |
| by at least one build step. |
| |
| <a name="nested_step"></a>The `step` block supports: |
| |
| * `name` - |
| (Required) |
| The name of the container image that will run this particular build step. |
| If the image is available in the host's Docker daemon's cache, it will be |
| run directly. If not, the host will attempt to pull the image first, using |
| the builder service account's credentials if necessary. |
| The Docker daemon's cache will already have the latest versions of all of |
| the officially supported build steps (see https://github.com/GoogleCloudPlatform/cloud-builders |
| for images and examples). |
| The Docker daemon will also have cached many of the layers for some popular |
| images, like "ubuntu", "debian", but they will be refreshed at the time |
| you attempt to use them. |
| If you built an image in a previous build step, it will be stored in the |
| host's Docker daemon's cache and is available to use as the name for a |
| later build step. |
| |
| * `args` - |
| (Optional) |
| A list of arguments that will be presented to the step when it is started. |
| If the image used to run the step's container has an entrypoint, the args |
| are used as arguments to that entrypoint. If the image does not define an |
| entrypoint, the first element in args is used as the entrypoint, and the |
| remainder will be used as arguments. |
| |
| * `env` - |
| (Optional) |
| A list of environment variable definitions to be used when |
| running a step. |
| The elements are of the form "KEY=VALUE" for the environment variable |
| "KEY" being given the value "VALUE". |
| |
| * `id` - |
| (Optional) |
| Unique identifier for this build step, used in `wait_for` to |
| reference this build step as a dependency. |
| |
| * `entrypoint` - |
| (Optional) |
| Entrypoint to be used instead of the build step image's |
| default entrypoint. |
| If unset, the image's default entrypoint is used |
| |
| * `dir` - |
| (Optional) |
| Working directory to use when running this step's container. |
| If this value is a relative path, it is relative to the build's working |
| directory. If this value is absolute, it may be outside the build's working |
| directory, in which case the contents of the path may not be persisted |
| across build step executions, unless a `volume` for that path is specified. |
| If the build specifies a `RepoSource` with `dir` and a step with a |
| `dir`, |
| which specifies an absolute path, the `RepoSource` `dir` is ignored |
| for the step's execution. |
| |
| * `secret_env` - |
| (Optional) |
| A list of environment variables which are encrypted using |
| a Cloud Key |
| Management Service crypto key. These values must be specified in |
| the build's `Secret`. |
| |
| * `timeout` - |
| (Optional) |
| Time limit for executing this build step. If not defined, |
| the step has no |
| time limit and will be allowed to continue to run until either it |
| completes or the build itself times out. |
| |
| * `timing` - |
| (Optional) |
| Output only. Stores timing information for executing this |
| build step. |
| |
| * `volumes` - |
| (Optional) |
| List of volumes to mount into the build step. |
| Each volume is created as an empty volume prior to execution of the |
| build step. Upon completion of the build, volumes and their contents |
| are discarded. |
| Using a named volume in only one step is not valid as it is |
| indicative of a build request with an incorrect configuration. |
| Structure is [documented below](#nested_volumes). |
| |
| * `wait_for` - |
| (Optional) |
| The ID(s) of the step(s) that this build step depends on. |
| This build step will not start until all the build steps in `wait_for` |
| have completed successfully. If `wait_for` is empty, this build step |
| will start when all previous build steps in the `Build.Steps` list |
| have completed successfully. |
| |
| * `script` - |
| (Optional) |
| A shell script to be executed in the step. |
| When script is provided, the user cannot specify the entrypoint or args. |
| |
| * `allow_failure` - |
| (Optional) |
| Allow this build step to fail without failing the entire build. |
| If false, the entire build will fail if this step fails. Otherwise, the |
| build will succeed, but this step will still have a failure status. |
| Error information will be reported in the `failureDetail` field. |
| `allowExitCodes` takes precedence over this field. |
| |
| * `allow_exit_codes` - |
| (Optional) |
| Allow this build step to fail without failing the entire build if and |
| only if the exit code is one of the specified codes. |
| If `allowFailure` is also specified, this field will take precedence. |
| |
| |
| <a name="nested_volumes"></a>The `volumes` block supports: |
| |
| * `name` - |
| (Required) |
| Name of the volume to mount. |
| Volume names must be unique per build step and must be valid names for |
| Docker volumes. Each named volume must be used by at least two build steps. |
| |
| * `path` - |
| (Required) |
| Path at which to mount the volume. |
| Paths must be absolute and cannot conflict with other volume paths on |
| the same build step or with certain reserved volume paths. |
| |
| <a name="nested_artifacts"></a>The `artifacts` block supports: |
| |
| * `images` - |
| (Optional) |
| A list of images to be pushed upon the successful completion of all build steps. |
| The images will be pushed using the builder service account's credentials. |
| The digests of the pushed images will be stored in the Build resource's results field. |
| If any of the images fail to be pushed, the build is marked FAILURE. |
| |
| * `objects` - |
| (Optional) |
| A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. |
| Files in the workspace matching specified paths globs will be uploaded to the |
| Cloud Storage location using the builder service account's credentials. |
| The location and generation of the uploaded objects will be stored in the Build resource's results field. |
| If any objects fail to be pushed, the build is marked FAILURE. |
| Structure is [documented below](#nested_objects). |
| |
| * `maven_artifacts` - |
| (Optional) |
| A Maven artifact to upload to Artifact Registry upon successful completion of all build steps. |
| The location and generation of the uploaded objects will be stored in the Build resource's results field. |
| If any objects fail to be pushed, the build is marked FAILURE. |
| Structure is [documented below](#nested_maven_artifacts). |
| |
| * `python_packages` - |
| (Optional) |
| Python package to upload to Artifact Registry upon successful completion of all build steps. A package can encapsulate multiple objects to be uploaded to a single repository. |
| The location and generation of the uploaded objects will be stored in the Build resource's results field. |
| If any objects fail to be pushed, the build is marked FAILURE. |
| Structure is [documented below](#nested_python_packages). |
| |
| * `npm_packages` - |
| (Optional) |
| Npm package to upload to Artifact Registry upon successful completion of all build steps. |
| The location and generation of the uploaded objects will be stored in the Build resource's results field. |
| If any objects fail to be pushed, the build is marked FAILURE. |
| Structure is [documented below](#nested_npm_packages). |
| |
| |
| <a name="nested_objects"></a>The `objects` block supports: |
| |
| * `location` - |
| (Optional) |
| Cloud Storage bucket and optional object path, in the form "gs://bucket/path/to/somewhere/". |
| Files in the workspace matching any path pattern will be uploaded to Cloud Storage with |
| this location as a prefix. |
| |
| * `paths` - |
| (Optional) |
| Path globs used to match files in the build's workspace. |
| |
| * `timing` - |
| (Output) |
| Output only. Stores timing information for pushing all artifact objects. |
| Structure is [documented below](#nested_timing). |
| |
| |
| <a name="nested_timing"></a>The `timing` block contains: |
| |
| * `start_time` - |
| (Optional) |
| Start of time span. |
| A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to |
| nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". |
| |
| * `end_time` - |
| (Optional) |
| End of time span. |
| A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to |
| nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". |
| |
| <a name="nested_maven_artifacts"></a>The `maven_artifacts` block supports: |
| |
| * `repository` - |
| (Optional) |
| Artifact Registry repository, in the form "https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY" |
| Artifact in the workspace specified by path will be uploaded to Artifact Registry with this location as a prefix. |
| |
| * `path` - |
| (Optional) |
| Path to an artifact in the build's workspace to be uploaded to Artifact Registry. This can be either an absolute path, e.g. /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar. |
| |
| * `artifact_id` - |
| (Optional) |
| Maven artifactId value used when uploading the artifact to Artifact Registry. |
| |
| * `group_id` - |
| (Optional) |
| Maven groupId value used when uploading the artifact to Artifact Registry. |
| |
| * `version` - |
| (Optional) |
| Maven version value used when uploading the artifact to Artifact Registry. |
| |
| <a name="nested_python_packages"></a>The `python_packages` block supports: |
| |
| * `repository` - |
| (Optional) |
| Artifact Registry repository, in the form "https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY" |
| Files in the workspace matching any path pattern will be uploaded to Artifact Registry with this location as a prefix. |
| |
| * `paths` - |
| (Optional) |
| Path globs used to match files in the build's workspace. For Python/ Twine, this is usually dist/*, and sometimes additionally an .asc file. |
| |
| <a name="nested_npm_packages"></a>The `npm_packages` block supports: |
| |
| * `repository` - |
| (Optional) |
| Artifact Registry repository, in the form "https://$REGION-npm.pkg.dev/$PROJECT/$REPOSITORY" |
| Npm package in the workspace specified by path will be zipped and uploaded to Artifact Registry with this location as a prefix. |
| |
| * `package_path` - |
| (Optional) |
| Path to the package.json. e.g. workspace/path/to/package |
| |
| <a name="nested_options"></a>The `options` block supports: |
| |
| * `source_provenance_hash` - |
| (Optional) |
| Requested hash for SourceProvenance. |
| Each value may be one of: `NONE`, `SHA256`, `MD5`. |
| |
| * `requested_verify_option` - |
| (Optional) |
| Requested verifiability options. |
| Possible values are: `NOT_VERIFIED`, `VERIFIED`. |
| |
| * `machine_type` - |
| (Optional) |
| Compute Engine machine type on which to run the build. |
| |
| * `disk_size_gb` - |
| (Optional) |
| Requested disk size for the VM that runs the build. Note that this is NOT "disk free"; |
| some of the space will be used by the operating system and build utilities. |
| Also note that this is the minimum disk size that will be allocated for the build -- |
| the build may run with a larger disk than requested. At present, the maximum disk size |
| is 1000GB; builds that request more than the maximum are rejected with an error. |
| |
| * `substitution_option` - |
| (Optional) |
| Option to specify behavior when there is an error in the substitution checks. |
| NOTE this is always set to ALLOW_LOOSE for triggered builds and cannot be overridden |
| in the build configuration file. |
| Possible values are: `MUST_MATCH`, `ALLOW_LOOSE`. |
| |
| * `dynamic_substitutions` - |
| (Optional) |
| Option to specify whether or not to apply bash style string operations to the substitutions. |
| NOTE this is always enabled for triggered builds and cannot be overridden in the build configuration file. |
| |
| * `log_streaming_option` - |
| (Optional) |
| Option to define build log streaming behavior to Google Cloud Storage. |
| Possible values are: `STREAM_DEFAULT`, `STREAM_ON`, `STREAM_OFF`. |
| |
| * `worker_pool` - |
| (Optional) |
| Option to specify a WorkerPool for the build. Format projects/{project}/workerPools/{workerPool} |
| This field is experimental. |
| |
| * `logging` - |
| (Optional) |
| Option to specify the logging mode, which determines if and where build logs are stored. |
| Possible values are: `LOGGING_UNSPECIFIED`, `LEGACY`, `GCS_ONLY`, `STACKDRIVER_ONLY`, `CLOUD_LOGGING_ONLY`, `NONE`. |
| |
| * `env` - |
| (Optional) |
| A list of global environment variable definitions that will exist for all build steps |
| in this build. If a variable is defined in both globally and in a build step, |
| the variable will use the build step value. |
| The elements are of the form "KEY=VALUE" for the environment variable "KEY" being given the value "VALUE". |
| |
| * `secret_env` - |
| (Optional) |
| A list of global environment variables, which are encrypted using a Cloud Key Management |
| Service crypto key. These values must be specified in the build's Secret. These variables |
| will be available to all build steps in this build. |
| |
| * `volumes` - |
| (Optional) |
| Global list of volumes to mount for ALL build steps |
| Each volume is created as an empty volume prior to starting the build process. |
| Upon completion of the build, volumes and their contents are discarded. Global |
| volume names and paths cannot conflict with the volumes defined a build step. |
| Using a global volume in a build with only one step is not valid as it is indicative |
| of a build request with an incorrect configuration. |
| Structure is [documented below](#nested_volumes). |
| |
| |
| <a name="nested_volumes"></a>The `volumes` block supports: |
| |
| * `name` - |
| (Optional) |
| Name of the volume to mount. |
| Volume names must be unique per build step and must be valid names for Docker volumes. |
| Each named volume must be used by at least two build steps. |
| |
| * `path` - |
| (Optional) |
| Path at which to mount the volume. |
| Paths must be absolute and cannot conflict with other volume paths on the same |
| build step or with certain reserved volume paths. |
| |
| ## Attributes Reference |
| |
| In addition to the arguments listed above, the following computed attributes are exported: |
| |
| * `id` - an identifier for the resource with format `projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}` |
| |
| * `trigger_id` - |
| The unique identifier for the trigger. |
| |
| * `create_time` - |
| Time when the trigger was created. |
| |
| |
| ## Timeouts |
| |
| This resource provides the following |
| [Timeouts](https://developer.hashicorp.com/terraform/plugin/sdkv2/resources/retries-and-customizable-timeouts) configuration options: |
| |
| - `create` - Default is 20 minutes. |
| - `update` - Default is 20 minutes. |
| - `delete` - Default is 20 minutes. |
| |
| ## Import |
| |
| |
| Trigger can be imported using any of these accepted formats: |
| |
| * `projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}` |
| * `projects/{{project}}/triggers/{{trigger_id}}` |
| * `{{project}}/{{trigger_id}}` |
| * `{{trigger_id}}` |
| |
| |
| In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Trigger using one of the formats above. For example: |
| |
| ```tf |
| import { |
| id = "projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}" |
| to = google_cloudbuild_trigger.default |
| } |
| ``` |
| |
| When using the [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import), Trigger can be imported using one of the formats above. For example: |
| |
| ``` |
| $ terraform import google_cloudbuild_trigger.default projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}} |
| $ terraform import google_cloudbuild_trigger.default projects/{{project}}/triggers/{{trigger_id}} |
| $ terraform import google_cloudbuild_trigger.default {{project}}/{{trigger_id}} |
| $ terraform import google_cloudbuild_trigger.default {{trigger_id}} |
| ``` |
| |
| ## User Project Overrides |
| |
| This resource supports [User Project Overrides](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference#user_project_override). |