Halaman ini menjelaskan cara menghubungkan repositori GitHub ke Cloud Build. Untuk mempelajari repositori Cloud Build lebih lanjut, lihat Repositori Cloud Build.
Sebelum memulai
Aktifkan Cloud Build dan Secret Manager API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.
- Siapkan kode sumber Anda di repositori GitHub.
- Memiliki file konfigurasi Cloud Build
Dockerfileatau di repositori sumber GitHub Anda. - Jika Anda menghubungkan repositori ke Cloud Build untuk pertama kalinya, pastikan Anda memiliki izin tingkat admin di repositori. Untuk mempelajari lebih lanjut izin repositori GitHub, lihat Tingkat izin repositori untuk organisasi.
Untuk menggunakan perintah
gclouddi halaman ini, instal Google Cloud CLI.
Menghubungkan ke host GitHub
Konsol
Untuk menghubungkan repositori GitHub Anda ke Cloud Build:
Buka halaman Repositori di Google Cloud konsol.
Anda akan melihat halaman Repositories.
Di pemilih project di panel atas, pilih Google Cloud project 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 Anda.
Di bagian Configure Connection, masukkan informasi berikut:
Region: Pilih region untuk koneksi Anda.
Name: Masukkan nama untuk koneksi Anda.
Opsional: Jika Anda ingin mengelola kunci enkripsi yang digunakan untuk mengenkripsi token akses untuk repositori GitHub Anda, buka bagian Encryption dan pilih kunci Cloud Key Management Service. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan kunci enkripsi yang dikelola pelanggan untuk Secret Manager.
Klik Hubungkan.
Setelah mengklik tombol Connect, Anda akan diminta untuk memberi otorisasi ke Aplikasi GitHub Cloud Build agar dapat mengakses akun GitHub Anda. Anda dapat mencabut akses ke aplikasi dengan meng-uninstal atau menghapus Aplikasi dari host Anda kapan saja.
Cloud Build meminta otorisasi akun pengguna GitHub Anda dan menyimpan token otorisasi yang dihasilkan sebagai secret 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 secret dan melihat detail secret.Setelah mengizinkan Aplikasi GitHub Cloud Build, Anda akan dialihkan ke halaman Repositories Cloud Build.
gcloud
Untuk menghubungkan host GitHub menggunakan gcloud,
selesaikan langkah-langkah berikut:
Masukkan perintah berikut untuk memulai koneksi ke repositori GitHub Anda:
gcloud builds connections create github CONNECTION_NAME --region=REGIONDengan:
- CONNECTION_NAME adalah nama untuk koneksi Anda sebagaimana yang akan muncul di Cloud Build.
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.comAnda.Ikuti link untuk memberi otorisasi pada Aplikasi GitHub Cloud Build.
Setelah mengizinkan aplikasi, Cloud Build menyimpan token autentikasi sebagai secret di Secret Manager dalam project Google CloudAnda. Anda dapat melihat secret di halaman Secret Manager.
Instal Aplikasi GitHub Cloud Build di akun Anda atau di akun 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=REGIONDengan:
- CONNECTION_NAME adalah nama koneksi host GitHub Anda di Cloud Build.
- REGION adalah region untuk pemicu Anda.
Jika kolom
installationStatedisetel keCOMPLETE, Anda telah berhasil menginstal koneksi. Jika tidak, kolominstallationStateakan memberikan link untuk langkah-langkah tambahan yang diperlukan.
Menghubungkan ke host GitHub secara terprogram
Untuk menyiapkan koneksi terprogram secara aman, ikuti Google Cloud's praktik terbaik keamanan:
- Workload Identity Federation (WIF): Jika Anda menjalankan skrip deployment atau konfigurasi Terraform melalui pipeline CI/CD (seperti GitHub Actions atau GitLab CI), konfigurasi Workload Identity Federation dan manfaatkan kredensial dengan masa berlaku singkat menggunakan peran IAM untuk mengautentikasi pipeline ke Google Cloud. Hal ini menghilangkan kebutuhan untuk mengelola dan mengekspos kunci akun layanan yang berlaku lama.
- Prinsip Hak Istimewa Terendah: Pilih hanya cakupan dan izin minimal yang diperlukan untuk token autentikasi Anda.
- Token Akses Pribadi dengan Izin Terperinci: Sebaiknya gunakan Token Akses Pribadi (PAT) dengan izin terperinci dengan tanggal habis masa berlaku yang singkat, bukan Token Akses Pribadi klasik.
Gunakan akun robot: Untuk mengurangi risiko gangguan pipeline saat karyawan mengubah peran atau keluar dari organisasi Anda, gunakan akun robot atau akun layanan GitHub khusus, bukan akun pribadi karyawan.
Terraform
Anda dapat menghubungkan host GitHub ke Cloud Build menggunakan penyedia Google Terraform dengan menyelesaikan langkah-langkah berikut:
Instal Aplikasi GitHub Cloud Build di akun GitHub Anda atau di organisasi yang Anda miliki.
Buat token akses pribadi di GitHub. Sebaiknya buat token ini menggunakan akun robot GitHub khusus:
Sebaiknya buat Personal Access Token (PAT) terperinci:
- Tetapkan tanggal habis masa berlaku yang singkat. Token tanpa tanggal habis masa berlaku tidak disarankan.
- Pilih izin minimal yang diperlukan untuk penyiapan Anda.
Jika Anda harus menggunakan Token Akses Pribadi lama/klasik sebagai pengganti (yang kurang aman karena memberikan cakupan repositori yang luas), pilih cakupan OAuth berikut saat diminta di GitHub:
repountuk memberikan akses penuh ke repositori publik dan pribadi.read:useruntuk memberikan akses guna membaca data profil pengguna.read:orguntuk akses hanya baca ke keanggotaan organisasi dan project (jika aplikasi Anda diinstal di organisasi).
Setelah membuat token, simpan di lokasi yang aman. Anda akan menggunakan token ini pada langkah-langkah berikutnya.
Dalam contoh berikut, cuplikan kode melakukan hal berikut:
Mengonfigurasi penyedia Google Terraform. Jika menjalankan konfigurasi dari pipeline deployment, konfigurasi penyedia untuk menggunakan Workload Identity Federation dengan kredensial berjangka pendek.
Membuat secret untuk menyatakan Token Akses Pribadi (PAT) GitHub dan memberikan izin kepada Agen Layanan Cloud Build untuk mengakses secret tersebut.
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 { auto {} } } 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:
- PROJECT_NUMBER adalah nomor project Google Cloud Anda.
- SECRET_ID adalah ID token atau secret Anda di Secret Manager.
- GITHUB_PAT adalah token akses dari token akses pribadi di GitHub.
- PROJECT_ID adalah Google Cloud project ID Anda.
- REGION adalah region untuk koneksi Anda.
- CONNECTION_NAME adalah nama untuk koneksi Anda seperti yang akan muncul di Cloud Build.
- 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.
gcloud
Untuk menghubungkan host GitHub menggunakan token dan ID penginstalan yang ada yang diperoleh dari koneksi sebelumnya, selesaikan langkah-langkah berikut:
Instal Aplikasi GitHub Cloud Build di akun GitHub Anda atau di organisasi yang Anda miliki.
Buat token akses pribadi di GitHub. Sebaiknya buat token ini menggunakan akun robot GitHub khusus:
Sebaiknya buat Personal Access Token (PAT) terperinci:
- Tetapkan tanggal habis masa berlaku yang singkat. Token tanpa tanggal habis masa berlaku tidak disarankan.
- Pilih izin minimal yang diperlukan untuk penyiapan Anda.
Jika Anda harus menggunakan Token Akses Pribadi lama/klasik sebagai pengganti (yang kurang aman karena memberikan cakupan repositori yang luas), pilih cakupan OAuth berikut saat diminta di GitHub:
repountuk memberikan akses penuh ke repositori publik dan pribadi.read:useruntuk memberikan akses guna membaca data profil pengguna.read:orguntuk akses hanya baca ke keanggotaan organisasi dan project (jika aplikasi Anda diinstal di organisasi).
Setelah membuat token, simpan di lokasi yang aman. Anda akan menggunakan token ini pada langkah-langkah berikutnya.
Simpan token Anda di Secret Manager di Google Cloud project Anda dengan menjalankan perintah berikut:
echo -n TOKEN | gcloud secrets create SECRET_NAME --data-file=-Dengan:
- TOKEN adalah token akses pribadi Anda.
- SECRET_NAME adalah nama yang ingin Anda berikan ke secret di Secret Manager.
Beri akses ke Agen Layanan Cloud Build pada secret, dengan SECRET_NAME adalah nama secret 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=REGIONDengan:
- CONNECTION_NAME adalah nama koneksi host GitHub Anda di Cloud Build.
- PROJECT_ID adalah Google Cloud project ID Anda.
- SECRET_NAME adalah nama secret Anda seperti yang disimpan 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 adalah nilai numerik1234567. - REGION adalah region untuk koneksi Anda.
Menghubungkan repositori GitHub
Konsol
Untuk menghubungkan repositori GitHub ke koneksi host, selesaikan langkah-langkah berikut:
Buka halaman Repositori di Google Cloud konsol.
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.
Repositori: Pilih repositori yang akan ditautkan ke koneksi Anda.
Nama Repositori: Masukkan nama untuk repositori Anda.
- Dibuat: Pilih opsi ini agar Cloud Build otomatis membuat nama repositori untuk Anda bagi repositori yang dipilih.
Manual: Pilih opsi ini untuk menentukan nama secara manual bagi repositori yang Anda pilih.
Jika memilih Manual, Anda dapat mengubah nama repositori yang dipilih di bagian Nama repositori.
Klik Link untuk menautkan repositori 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:
- REPO_NAME adalah nama repositori Anda.
- REPO_URI adalah link ke repositori GitHub Anda. Contoh,
https://github.com/cloud-build/test-repo.git. - CONNECTION_NAME adalah nama yang diberikan ke koneksi host GitHub Enterprise yang dibuat di Cloud Build dari Menghubungkan ke host GitHub.
- REGION adalah region untuk koneksi Anda.
Terraform
Untuk menambahkan repositori GitHub ke koneksi Anda, tambahkan cuplikan kode berikut ke konfigurasi Terraform Anda:
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:
- PROJECT_ID adalah Google Cloud project ID Anda.
- REPO_NAME adalah nama repositori GitHub Anda.
- REGION adalah region untuk koneksi Anda.
- URI adalah URI host repositori Anda. Contoh,
https://github.com/myuser/myrepo.git.
Langkah berikutnya
- Pelajari cara membangun repositori dari GitHub.
- Pelajari cara melakukan deployment biru-hijau di Compute Engine.
- Pelajari cara menentukan repositori tambahan sebagai dependensi pada build Anda.