Menghubungkan ke repositori GitHub

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.

    Mengaktifkan API

  • 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.

Izin IAM yang diperlukan

Untuk menghubungkan host GitHub Anda, berikan peran Cloud Build Connection Admin (roles/cloudbuild.connectionAdmin) ke akun pengguna Anda.

Untuk menambahkan peran yang diperlukan ke akun pengguna Anda, lihat Mengonfigurasi akses ke resource Cloud Build. Untuk mempelajari lebih lanjut peran IAM yang terkait dengan Cloud Build, lihat Peran dan izin IAM.

Untuk membuat koneksi menggunakan langkah-langkah penginstalan gcloud, berikan peran Admin Secret Manager (roles/secretmanager.admin) kepada Agen Layanan Cloud Build dengan menjalankan perintah berikut di project Google Cloud Anda:

PN=$(gcloud projects describe ${PROJECT_ID} -- format="value(projectNumber)")
CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \
  --role="roles/secretmanager.admin"

Menghubungkan host GitHub

Konsol

Untuk menghubungkan repositori GitHub Anda ke Cloud Build:

  1. Buka halaman Repositories di Konsol Google Cloud.

    Buka halaman Repositori

    Anda akan melihat halaman Repositories.

  2. Pada pemilih project di panel atas, pilih project Google Cloud Anda.

  3. Di bagian atas halaman, pilih tab generasi ke-2.

  4. Klik Create host connection untuk menghubungkan host baru ke Cloud Build.

  5. Di panel kiri, pilih GitHub sebagai penyedia sumber.

  6. Di bagian Configure Connection, masukkan informasi berikut:

    1. Region: Pilih region untuk koneksi Anda.

    2. Nama: Masukkan nama untuk koneksi Anda.

  7. 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:

  1. 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.

  2. Login ke akun github.com Anda.

  3. 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.

  4. 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.

  5. 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 ke COMPLETE, berarti Anda berhasil menginstal koneksi. Jika tidak, kolom installationState 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:

  1. Instal Aplikasi GitHub Cloud Build di akun GitHub atau di organisasi yang Anda miliki.

  2. Buat token akses pribadi.

    Pastikan Anda menyetel token 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 Anda juga memilih izin read: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 numerik 1234567.

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:

  1. Instal Aplikasi GitHub Cloud Build di akun GitHub atau di organisasi yang Anda miliki.

  2. Buat token akses pribadi.

    Pastikan Anda menyetel token 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 Anda juga memilih izin read:org.

    Setelah membuat token akses pribadi, simpan token yang dihasilkan di tempat yang aman. Anda akan menggunakan token yang dihasilkan dalam langkah-langkah berikut.

  3. 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.
  4. 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"
    
  5. 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 numerik 1234567.
    • 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:

  1. Buka halaman Repositories di Konsol Google Cloud.

    Buka halaman Repositori

    Anda akan melihat halaman Repositories.

  2. Di bagian atas halaman, pilih tab generasi ke-2.

  3. Klik Link Repositories untuk menautkan repositori dari koneksi Anda.

    Anda akan melihat panel Connect Repositories.

  4. Di panel Connect Repositories, masukkan informasi berikut:

    1. Koneksi: Pilih koneksi dari menu drop-down.
    2. Repository: Pilih repositori yang akan ditautkan ke koneksi Anda.

    3. Nama Repositori: Masukkan nama untuk repositori Anda.

      1. Dibuat: Pilih opsi ini agar Cloud Build dapat membuat nama repositori secara otomatis atas nama Anda untuk repositori yang dipilih.
      2. 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.

  5. 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