Halaman ini menjelaskan cara menghubungkan repositori GitHub ke Cloud Build. Untuk mempelajari repositori Cloud Build lebih lanjut, lihat Repositori Cloud Build.
Sebelum memulai
-
Aktifkan API Cloud Build and Secret Manager.
- Siapkan kode sumber Anda di repositori GitHub.
- Memiliki
Dockerfile
atau file konfigurasi Cloud Build di repositori sumber GitHub Anda. - Jika Anda baru pertama kali menghubungkan repositori ke Cloud Build, pastikan Anda memiliki izin tingkat admin di repositori Anda. Untuk mempelajari izin repositori GitHub lebih lanjut, lihat Tingkat izin repositori untuk organisasi.
Untuk menggunakan perintah
gcloud
di halaman ini, instal Google Cloud CLI.
Menghubungkan host GitHub
Konsol
Untuk menghubungkan repositori GitHub Anda ke Cloud Build:
Buka halaman Repositories di Konsol Google Cloud.
Anda akan melihat halaman Repositories.
Pada pemilih project di panel atas, pilih project Google Cloud Anda.
Di bagian atas halaman, pilih tab generasi ke-2.
Klik Create host connection untuk menghubungkan host baru ke Cloud Build.
Di panel kiri, pilih GitHub sebagai penyedia sumber.
Di bagian Configure Connection, masukkan informasi berikut:
Region: Pilih region untuk koneksi Anda.
Nama: Masukkan nama untuk koneksi Anda.
Klik Connect.
Setelah mengklik tombol Connect, Anda akan diminta untuk mengizinkan Aplikasi GitHub Cloud Build mengakses akun GitHub Anda. Anda dapat mencabut akses ke aplikasi dengan meng-uninstal atau menghapus Aplikasi dari host kapan saja.
Cloud Build meminta otorisasi akun pengguna GitHub Anda dan menyimpan token otorisasi yang dihasilkan sebagai rahasia di Secret Manager dalam project Anda. Token otorisasi digunakan untuk memvalidasi akses akun pengguna Anda untuk penginstalan Aplikasi GitHub Cloud Build dan ke repositori yang ditautkan. Akun Agen Layanan Cloud Build (
service-{projectNumber}@gcp-sa-cloudbuild.iam.gserviceaccount.com
) digunakan untuk mengakses secret Anda. Untuk melihat secret Anda, lihat Mencantumkan rahasia dan melihat detail rahasia.Setelah memberi otorisasi pada Aplikasi GitHub Cloud Build, Anda akan dialihkan ke halaman Repositori Cloud Build.
Anda berhasil membuat koneksi GitHub.
gcloud
Untuk menghubungkan host GitHub Anda menggunakan gcloud
,
selesaikan langkah-langkah berikut:
Masukkan perintah berikut untuk memulai koneksi ke repositori GitHub Anda:
gcloud builds connections create github CONNECTION_NAME --region=REGION
Dengan keterangan:
- CONNECTION_NAME adalah nama koneksi Anda.
REGION adalah region untuk pemicu Anda.
Setelah menjalankan perintah
gcloud builds connections
, Anda akan melihat link untuk mengizinkan Aplikasi GitHub Cloud Build.Login ke akun
github.com
Anda.Ikuti link untuk mengizinkan Aplikasi Cloud Build GitHub.
Setelah memberi otorisasi pada aplikasi, Cloud Build akan menyimpan token autentikasi sebagai rahasia di Secret Manager dalam project Google Cloud Anda. Anda dapat melihat secret di halaman Secret Manager.
Instal Aplikasi GitHub Cloud Build di akun Anda atau di organisasi yang Anda miliki.
Izinkan penginstalan menggunakan akun GitHub Anda dan pilih izin repositori saat diminta.
Verifikasi penginstalan koneksi GitHub Anda dengan menjalankan perintah berikut:
gcloud builds connections describe CONNECTION_NAME --region=REGION
Dengan keterangan:
- CONNECTION_NAME adalah nama koneksi Anda.
- REGION adalah region untuk pemicu Anda.
Jika kolom
installationState
ditetapkan keCOMPLETE
, berarti Anda berhasil menginstal koneksi. Jika tidak, kolominstallationState
akan menyediakan link untuk langkah tambahan yang diperlukan.
Anda berhasil membuat koneksi GitHub.
Menghubungkan host GitHub secara terprogram
Terraform
Anda dapat menghubungkan host GitHub Anda ke Cloud Build menggunakan penyedia Google Terraform dengan menyelesaikan langkah-langkah berikut:
Instal Aplikasi GitHub Cloud Build di akun GitHub atau di organisasi yang Anda miliki.
-
Pastikan Anda menyetel token agar tidak memiliki tanggal habis masa berlaku dan pilih izin berikut saat diminta di GitHub:
repo
danread:user
. Jika aplikasi Anda diinstal di organisasi, pastikan Anda juga memilih izinread:org
.Setelah membuat token akses pribadi, simpan token yang dihasilkan di tempat yang aman. Anda akan menggunakan token yang dihasilkan dalam langkah-langkah berikut.
Dalam contoh berikut, cuplikan kode melakukan hal berikut:
Mengonfigurasi penyedia Google Terraform
Membuat secret untuk menyimpan token akses pribadi GitHub guna memberikan izin kepada Agen Layanan Cloud Build untuk mengakses secret
Membuat koneksi GitHub
// Configure the terraform google provider terraform { required_providers { google = {} } } // Create a secret containing the personal access token and grant permissions to the Service Agent resource "google_secret_manager_secret" "github_token_secret" { project = PROJECT_ID secret_id = SECRET_ID replication { automatic = true } } resource "google_secret_manager_secret_version" "github_token_secret_version" { secret = google_secret_manager_secret.github_token_secret.id secret_data = GITHUB_PAT } data "google_iam_policy" "serviceagent_secretAccessor" { binding { role = "roles/secretmanager.secretAccessor" members = ["serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"] } } resource "google_secret_manager_secret_iam_policy" "policy" { project = google_secret_manager_secret.github_token_secret.project secret_id = google_secret_manager_secret.github_token_secret.secret_id policy_data = data.google_iam_policy.serviceagent_secretAccessor.policy_data } // Create the GitHub connection resource "google_cloudbuildv2_connection" "my_connection" { project = PROJECT_ID location = REGION name = CONNECTION_NAME github_config { app_installation_id = INSTALLATION_ID authorizer_credential { oauth_token_secret_version = google_secret_manager_secret_version.github_token_secret_version.id } } depends_on = [google_secret_manager_secret_iam_policy.policy] }
Dengan keterangan:
- PROJECT_NUMBER adalah nomor project Google Cloud Anda.
- SECRET_ID adalah ID token atau secret Anda di Secret Manager.
- GITHUB_PAT adalah ID token akses pribadi Anda di GitHub.
- PROJECT_ID adalah ID project Google Cloud Anda.
- REGION adalah region untuk koneksi Anda.
- CONNECTION_NAME adalah nama koneksi GitHub Anda.
- INSTALLATION_ID adalah ID penginstalan aplikasi GitHub Cloud Build Anda. ID penginstalan Anda dapat ditemukan di URL Aplikasi GitHub Cloud Build Anda. Di URL berikut,
https://github.com/settings/installations/1234567
, ID penginstalan adalah nilai numerik1234567
.
Anda berhasil membuat koneksi GitHub.
gcloud
Untuk menghubungkan host GitHub Anda menggunakan token dan ID penginstalan yang ada yang diperoleh dari koneksi sebelumnya, lakukan langkah-langkah berikut:
Instal Aplikasi GitHub Cloud Build di akun GitHub atau di organisasi yang Anda miliki.
-
Pastikan Anda menyetel token agar tidak memiliki tanggal habis masa berlaku dan pilih izin berikut saat diminta di GitHub:
repo
danread:user
. Jika aplikasi Anda diinstal di organisasi, pastikan Anda juga memilih izinread:org
.Setelah membuat token akses pribadi, simpan token yang dihasilkan di tempat yang aman. Anda akan menggunakan token yang dihasilkan dalam langkah-langkah berikut.
Simpan token Anda di Secret Manager dalam project Google Cloud dengan menjalankan perintah berikut:
echo -n TOKEN | gcloud secrets create SECRET_NAME --data-file=-
Dengan keterangan:
- TOKEN adalah token akses pribadi Anda.
- SECRET_NAME adalah nama yang ingin Anda berikan ke rahasia Anda di Secret Manager.
Berikan akses ke Agen Layanan Cloud Build secara rahasia, dengan SECRET_NAME adalah nama rahasia Anda seperti yang disimpan di Secret Manager:
PROJECT_ID=$(gcloud config list --format="value(core.project)") PN=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)") CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud secrets add-iam-policy-binding SECRET_NAME \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \ --role="roles/secretmanager.secretAccessor"
Buat koneksi GitHub Anda:
gcloud builds connections create github CONNECTION_NAME \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/SECRET_NAME/versions/1 \ --app-installation-id=INSTALLATION_ID --region=REGION
Dengan keterangan:
- CONNECTION_NAME adalah nama koneksi Anda.
- PROJECT_ID adalah ID project Google Cloud Anda.
- SECRET_NAME adalah nama rahasia Anda seperti yang tersimpan di Secret Manager.
- INSTALLATION_ID adalah ID penginstalan aplikasi GitHub Anda. ID penginstalan Anda dapat ditemukan di URL Aplikasi GitHub Cloud Build Anda. Pada URL berikut,
https://github.com/settings/installations/1234567
, ID penginstalan berupa nilai numerik1234567
. - REGION adalah region untuk koneksi Anda.
Anda berhasil membuat koneksi GitHub.
Menghubungkan repositori GitHub
Konsol
Untuk menghubungkan repositori GitHub ke koneksi host, selesaikan langkah-langkah berikut:
Buka halaman Repositories di Konsol Google Cloud.
Anda akan melihat halaman Repositories.
Di bagian atas halaman, pilih tab generasi ke-2.
Klik Link Repositories untuk menautkan repositori dari koneksi Anda.
Anda akan melihat panel Connect Repositories.
Di panel Connect Repositories, masukkan informasi berikut:
- Koneksi: Pilih koneksi dari menu drop-down.
Repository: Pilih repositori yang akan ditautkan ke koneksi Anda.
Nama Repositori: Masukkan nama untuk repositori Anda.
- Dibuat: Pilih opsi ini agar Cloud Build dapat membuat nama repositori secara otomatis atas nama Anda untuk repositori yang dipilih.
Manual: Pilih opsi ini untuk menentukan nama secara manual bagi repositori yang dipilih.
Jika memilih Manual, Anda dapat mengubah nama untuk repositori yang dipilih di bagian Repository names.
Klik Link untuk menautkan repositori ke koneksi Anda.
Anda berhasil menautkan repositori GitHub ke koneksi Anda.
gcloud
Untuk menambahkan repositori GitHub ke koneksi Anda, masukkan perintah berikut:
gcloud builds repositories create REPO_NAME \
--remote-uri=REPO_URI \
--connection=CONNECTION_NAME --region=REGION
Dengan keterangan:
- REPO_NAME adalah nama repositori Anda.
- REPO_URI adalah link ke repositori GitHub Anda. Misalnya,
https://github.com/cloud-build/test-repo.git
. - CONNECTION_NAME adalah nama koneksi Anda.
- REGION adalah region untuk koneksi Anda.
Anda sekarang telah menautkan repositori ke koneksi GitHub Anda.
Terraform
Untuk menambahkan repositori GitHub ke koneksi Anda, tambahkan cuplikan kode berikut ke konfigurasi Terraform:
resource "google_cloudbuildv2_repository" "my_repository" {
project = "PROJECT_ID"
location = "REGION"
name = "REPO_NAME"
parent_connection = google_cloudbuildv2_connection.my_connection.name
remote_uri = "URI"
}
Dengan keterangan:
- PROJECT_ID adalah ID project Google Cloud Anda.
- REPO_NAME adalah nama repo GitHub Anda.
- REGION adalah region untuk koneksi Anda.
- URI adalah URI host repositori Anda. Misalnya,
https://github.com/myuser/myrepo.git
.
Anda sekarang telah menautkan repositori ke koneksi GitHub Anda.
Langkah selanjutnya
- Pelajari cara mem-build repositori dari GitHub.
- Pelajari cara melakukan blue/green deployment di Compute Engine.