[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["難以理解","hardToUnderstand","thumb-down"],["資訊或程式碼範例有誤","incorrectInformationOrSampleCode","thumb-down"],["缺少我需要的資訊/範例","missingTheInformationSamplesINeed","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-08-19 (世界標準時間)。"],[[["\u003cp\u003eThis page details how to automate Google Cloud resource deployments using Cloud Build triggers, your Git repositories, and Infrastructure Manager.\u003c/p\u003e\n"],["\u003cp\u003eSetting up this automation allows Infrastructure Manager to create deployment previews on pull requests and update deployments upon pull request merges.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eim_cloudbuild_workspace\u003c/code\u003e module is used to create a Cloud Build repository connection and the necessary triggers for pull requests and merges.\u003c/p\u003e\n"],["\u003cp\u003ePrerequisites include enabling Infrastructure Manager, ensuring proper IAM permissions and a suitable service account, and identifying the Git repository with Terraform configurations.\u003c/p\u003e\n"],["\u003cp\u003eInstalling the Cloud Build GitHub App and creating a personal access token are necessary steps to link your Git repository with Infra Manager for automated deployments.\u003c/p\u003e\n"]]],[],null,["# Automate the deployment of Google Cloud resources\n\nThis page describes the process to set up [Cloud Build triggers](/build/docs/triggers)\nto automate deployments of Google Cloud resources using your\nexisting repositories and Infrastructure Manager.\n\nOnce Infra Manager connects to your Git repository, pull requests\ninvoke a preview of a deployment, and commits invoke [creating a\ndeployment preview](/infrastructure-manager/docs/preview-deployment) or [updating the deployment](/infrastructure-manager/docs/update-deployment).\n\nBefore you begin\n----------------\n\n1. Ensure [Infra Manager is enabled](/infrastructure-manager/docs/enable-service).\n2. Ensure that you have the IAM permissions needed to create deployments:\n - `roles/config.admin`\n3. Ensure you have a service account with the needed permissions. For details, see [Configure the service account](/infrastructure-manager/docs/configure-service-account).\n4. Identify the existing Git repository that has the Terraform configuration. When you set up the automation described on this page, this is the Terraform configuration that Infra Manager uses to update resources.\n5. Recommended: Set up [branch protection](/docs/terraform/resource-management/managing-infrastructure-as-code#enforcing_cloud_build_execution_success_before_merging_branches) for your Git repository.\n\nAutomate the deployment of Google Cloud resources\n-------------------------------------------------\n\n| **Caution:** Infra Manager does not perform data migration or ensure service continuity. For example, if a revision deletes or replaces a database, it is your responsibility to manage data migration. Creating a revision can cause unrecoverable data loss. Re-applying the previous revision will not restore the data.\n\nThe following steps describe the setup required to automate the preview and\ndeployment of a Terraform configuration stored in a Git repository. A deployment\nof a Terraform configuration can be a revision to an existing deployment.\nRevisions might delete or replace provisioned Google Cloud resources.\n\nWhen the setup is complete, a pull request in the Git repository causes\nInfra Manager to create a preview of the deployment. When a pull request is\nmerged, then Infra Manager automatically deploys the Terraform configuration.\n\nThe `im_cloudbuild_workspace` module creates several resources, including:\n\n- A Cloud Build repository connection.\n- A Cloud Build trigger that is invoked when a pull request is created. This trigger causes Infra Manager to create a preview deployment using the Terraform configuration in the repository.\n- A Cloud Build trigger that is invoked when a pull request is merged with the Git repository. This trigger causes Infra Manager to create or update the deployment using the Terraform configuration in the repository.\n\n| **Note:** For more information about how you can modify the `im_cloudbuild_workspace` module's behavior, see the [`README`](https://github.com/terraform-google-modules/terraform-google-bootstrap/tree/master/modules/im_cloudbuild_workspace).\n\nTo automate Terraform configuration deployments when the repository is\nupdated:\n\n1. Install the [Cloud Build GitHub App](https://github.com/apps/google-cloud-build) on your GitHub account or in an organization you own.\n2. [Create a personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token).\n\n Make sure to set your token to have no expiration date and select the\n following permissions when prompted in GitHub: `repo` and `read:user`. If\n your app is installed in an organization, make sure to also select the\n `read:org` permission.\n\n After you generate your personal access token, save your generated token in\n a secure place. You use the generated token in the following steps.\n | **Note:** If you have an authentication token stored in a secret from a previously created connection, you can use that same secret for the new connection.\n3. Copy the `im_cloudbuild_workspace` module into the `main.tf` file within\n your Git repository:\n\n module \"im-workspace\" {\n source = \"terraform-google-modules/bootstrap/google//modules/im_cloudbuild_workspace\"\n version = \"~\u003e 7.0\"\n\n project_id = \"\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e\"\n deployment_id = \"\u003cvar translate=\"no\"\u003eDEPLOYMENT_ID\u003c/var\u003e\"\n im_deployment_repo_uri = \"\u003cvar translate=\"no\"\u003eGIT_REPO\u003c/var\u003e\"\n im_deployment_ref = \"\u003cvar translate=\"no\"\u003eREF\u003c/var\u003e\"\n\n github_app_installation_id = \"\u003cvar translate=\"no\"\u003eGIT_APP_ID\u003c/var\u003e\"\n github_personal_access_token = \"\u003cvar translate=\"no\"\u003eTOKEN\u003c/var\u003e\"\n }\n\n Replace:\n - \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e: the project ID where Infrastructure Manager runs.\n - \u003cvar translate=\"no\"\u003eDEPLOYMENT_ID\u003c/var\u003e: the deployment identifier that you specify. See [Deployment name](/infrastructure-manager/docs/deployments-revisions#deployment_name) for details about constraints on the deployment identifier.\n - \u003cvar translate=\"no\"\u003eGIT_REPO\u003c/var\u003e: the URI of the Git repository.\n - \u003cvar translate=\"no\"\u003eREF\u003c/var\u003e: the Git reference of the configuration. The reference is optional. If you don't specify the reference, the Git repository's default configured branch is used.\n - \u003cvar translate=\"no\"\u003eGIT_APP_ID\u003c/var\u003e: Installation ID of the Cloud Build GitHub app used for pull and push request triggers.\n - \u003cvar translate=\"no\"\u003eTOKEN\u003c/var\u003e: Personal access token for a GitHub repository. If provided, creates a secret within Secret Manager.\n4. Create a deployment (or update your existing deployment) with\n the `im_cloudbuild_workspace` module:\n\n gcloud infra-manager deployments apply projects/\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e/locations/\u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e/deployments/\u003cvar translate=\"no\"\u003eDEPLOYMENT_ID\u003c/var\u003e \\ \n --service-account projects/\u003cvar translate=\"no\"\u003eSERVICE_ACCOUNT_PROJECT_ID\u003c/var\u003e/serviceAccounts/\u003cvar translate=\"no\"\u003eSERVICE_ACCOUNT\u003c/var\u003e \\\n --git-source-repo=\u003cvar translate=\"no\"\u003eGIT_REPO\u003c/var\u003e \\\n --git-source-directory=\u003cvar translate=\"no\"\u003eDIRECTORY\u003c/var\u003e \\\n --git-source-ref=\u003cvar translate=\"no\"\u003eREF\u003c/var\u003e\n\n Replace:\n - \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e: the project ID where Infrastructure Manager runs.\n - \u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e: the location where Infra Manager runs. See [Infrastructure Manager locations](/infrastructure-manager/docs/locations) for the list of locations.\n - \u003cvar translate=\"no\"\u003eDEPLOYMENT_ID\u003c/var\u003e: the deployment identifier that you specify. See [Deployment name](/infrastructure-manager/docs/deployments-revisions#deployment_name) for details about constraints on the deployment identifier.\n - \u003cvar translate=\"no\"\u003eSERVICE_ACCOUNT\u003c/var\u003e: the name of the service account you use to call Infra Manager.\n - \u003cvar translate=\"no\"\u003eSERVICE_ACCOUNT_PROJECT_ID\u003c/var\u003e is the project ID of the service account. It's common for this to be the same project where Infrastructure Manager runs.\n - \u003cvar translate=\"no\"\u003eGIT_REPO\u003c/var\u003e: the public Git repository.\n - \u003cvar translate=\"no\"\u003eDIRECTORY\u003c/var\u003e: the directory that has the Terraform configuration.\n - \u003cvar translate=\"no\"\u003eREF\u003c/var\u003e: the Git reference of the configuration. The reference is optional. If you don't specify the reference, the Git repository's default configured branch is used.\n5. To confirm that your Git repository is connected correctly with\n Infra Manager, [create a pull request on your repository](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request).\n\n To see the results of the validation of the forked Terraform configuration,\n [view the pull request in GitHub](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request#discovering-and-navigating-conversations).\n | **Note:** For more information about how you can modify the `im_cloudbuild_workspace` module's behavior, see the [`README`](https://github.com/terraform-google-modules/terraform-google-bootstrap/tree/master/modules/im_cloudbuild_workspace).\n\nNow that this automation is set up, the Cloud Build triggers cause the\nfollowing:\n\n- When a pull request is made to the repository, Infra Manager creates a preview deployment using the forked Terraform configuration stored in the Git repository.\n- When a pull request is merged into the repository, Infra Manager updates the deployment using the forked Terraform configuration stored in the Git repository.\n\nWhat's next\n-----------\n\n- Use Cloud Build to [view build results for your build triggers](/build/docs/view-build-results-triggers).\n- [View resources deployed](/infrastructure-manager/docs/view-resources) with Infra Manager.\n- Monitor your Google Cloud resources with [Infrastructure Manager audit logging](/infrastructure-manager/docs/audit-logging)."]]