Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Halaman ini menjelaskan proses penyiapan pemicu Cloud Build
untuk mengotomatiskan deployment resource Google Cloud menggunakan repositori dan Infrastructure Manager yang ada.
Pastikan Anda memiliki izin IAM yang diperlukan untuk membuat deployment:
roles/config.admin
Pastikan Anda memiliki akun layanan dengan izin yang diperlukan. Untuk mengetahui detailnya,
lihat Mengonfigurasi akun layanan.
Identifikasi repositori Git yang ada yang memiliki konfigurasi Terraform.
Saat Anda menyiapkan otomatisasi yang dijelaskan di halaman ini, ini adalah konfigurasi Terraform yang digunakan Infra Manager untuk mengupdate resource.
Langkah-langkah berikut menjelaskan penyiapan yang diperlukan untuk mengotomatiskan pratinjau dan deployment konfigurasi Terraform yang disimpan di repositori Git. Deployment konfigurasi Terraform dapat berupa revisi pada deployment yang ada.
Revisi dapat menghapus atau mengganti resource Google Cloud yang disediakan.
Setelah penyiapan selesai, permintaan pull di repositori Git akan menyebabkan
Infra Manager membuat pratinjau deployment. Saat permintaan pull digabungkan, Infra Manager akan otomatis men-deploy konfigurasi Terraform.
Modul im_cloudbuild_workspace membuat beberapa resource, termasuk:
Koneksi repositori Cloud Build.
Pemicu Cloud Build yang dipanggil saat permintaan pull dibuat.
Pemicu ini menyebabkan Infra Manager membuat deployment pratinjau
menggunakan konfigurasi Terraform di repositori.
Pemicu Cloud Build yang dipanggil saat permintaan pull digabungkan dengan repositori GitHub. Pemicu ini menyebabkan Infra Manager membuat atau
mengupdate deployment menggunakan konfigurasi Terraform di repositori.
Untuk mengotomatiskan deployment konfigurasi Terraform saat repositori
diupdate:
Pastikan untuk menetapkan token Anda agar tidak memiliki tanggal habis masa berlaku dan pilih izin berikut saat diminta di GitHub: repo dan read:user. Jika
aplikasi Anda diinstal di organisasi, pastikan untuk juga memilih
izin read:org.
Setelah membuat token akses pribadi, simpan token yang dihasilkan di
tempat yang aman. Anda akan menggunakan token yang dibuat di langkah-langkah berikut.
Salin modul im_cloudbuild_workspace ke dalam file main.tf dalam
repositori Git Anda:
PROJECT_ID: project ID tempat Infrastructure Manager berjalan.
DEPLOYMENT_ID: ID deployment yang Anda tentukan. Lihat
Nama deployment
untuk mengetahui detail tentang batasan pada ID deployment.
GIT_REPO: URI repositori Git.
REF: referensi Git konfigurasi. Referensi bersifat
opsional. Jika Anda tidak menentukan referensi, cabang yang dikonfigurasi default repositori
Git akan digunakan.
GIT_APP_ID: ID penginstalan aplikasi GitHub Cloud Build yang digunakan
untuk pemicu permintaan pull dan push.
TOKEN: Token akses pribadi untuk repositori GitHub.
Jika disediakan, akan membuat secret dalam Secret Manager.
Buat deployment (atau perbarui deployment yang ada) dengan
modul im_cloudbuild_workspace:
DEPLOYMENT_ID: ID deployment yang Anda tentukan. Lihat
Nama deployment
untuk mengetahui detail tentang batasan pada ID deployment.
SERVICE_ACCOUNT: nama akun layanan yang Anda
gunakan untuk memanggil Infra Manager.
SERVICE_ACCOUNT_PROJECT_ID adalah project ID akun
layanan. Biasanya, project ini adalah project yang sama tempat
Infrastructure Manager berjalan.
GIT_REPO: repositori Git publik.
DIRECTORY: direktori yang memiliki konfigurasi Terraform.
REF: referensi Git konfigurasi. Referensi bersifat
opsional. Jika Anda tidak menentukan referensi, cabang yang dikonfigurasi default repositori
Git akan digunakan.
Setelah otomatisasi ini disiapkan, pemicu Cloud Build akan menyebabkan hal berikut:
Saat permintaan pull dibuat ke repositori, Infra Manager akan membuat deployment pratinjau menggunakan konfigurasi Terraform yang di-fork dan disimpan di repositori Git.
Saat permintaan pull digabungkan ke repositori, Pengelola Infra akan mengupdate deployment menggunakan konfigurasi Terraform yang di-fork dan disimpan di repositori Git.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-19 UTC."],[[["\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)."]]