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

  • Enable the Cloud Build and Secret Manager APIs.

    Enable the APIs

  • Siapkan kode sumber Anda di repositori GitHub.
  • Memiliki Dockerfile atau file konfigurasi Cloud Build di repositori sumber GitHub Anda.
  • Jika Anda awalnya menghubungkan repositori ke Cloud Build, pastikan Anda memiliki izin tingkat admin di repositori. 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:

  1. Buka halaman Repositories di konsol Google Cloud.

    Buka halaman Repositori

    Anda akan melihat halaman Repositori.

  2. Di 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 Anda.

  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 memberikan 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, lihat Mencantumkan secret dan melihat detail secret.

    Setelah mengizinkan Aplikasi GitHub Cloud Build, Anda akan dialihkan ke halaman Repositori Cloud Build.

Anda kini telah berhasil membuat koneksi GitHub.

gcloud

Untuk menghubungkan host GitHub 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 memberikan otorisasi ke Aplikasi GitHub Cloud Build.

  2. Login ke akun github.com Anda.

  3. Ikuti link untuk memberikan otorisasi ke Aplikasi GitHub Cloud Build.

    Setelah memberikan otorisasi ke aplikasi, Cloud Build akan menyimpan token autentikasi sebagai secret di Secret Manager di 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 disetel ke COMPLETE, Anda telah berhasil menginstal koneksi. Jika tidak, kolom installationState akan menyediakan link untuk langkah tambahan yang diperlukan.

Anda kini telah berhasil membuat koneksi GitHub.

Menghubungkan host GitHub secara terprogram

Terraform

Anda dapat menghubungkan host GitHub ke Cloud Build menggunakan penyedia Terraform Google dengan menyelesaikan langkah-langkah berikut:

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

  2. Buat token akses pribadi.

    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 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 {
            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 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 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 kini telah berhasil membuat koneksi GitHub.

gcloud

Untuk menghubungkan host GitHub menggunakan token dan ID penginstalan yang ada yang diperoleh dari koneksi sebelumnya, selesaikan langkah-langkah berikut:

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

  2. Buat token akses pribadi.

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

  3. Simpan token Anda di Secret Manager di project Google Cloud Anda 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 secret di Secret Manager.
  4. Berikan 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"
    
  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 secret Anda seperti yang disimpan di Secret Manager.
    • INSTALLATION_ID adalah ID penginstalan aplikasi GitHub Anda. ID penginstalan dapat ditemukan di URL Aplikasi GitHub Cloud Build Anda. Di URL berikut, https://github.com/settings/installations/1234567, ID penginstalan adalah nilai numerik 1234567.
    • REGION adalah region untuk koneksi Anda.

Anda kini telah 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 Repositori.

  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. Repositori: Pilih repositori yang akan ditautkan ke koneksi Anda.

    3. Nama Repositori: Masukkan nama untuk repositori Anda.

      1. Dibuat: Pilih opsi ini agar Cloud Build otomatis membuat nama repositori atas nama Anda untuk repositori yang dipilih.
      2. Manual: Pilih opsi ini untuk menentukan nama secara manual untuk repositori yang Anda pilih.

        Jika memilih Manual, Anda dapat mengubah nama untuk repositori yang dipilih di bagian Nama repositori.

  5. Klik Link untuk menautkan repositori ke koneksi Anda.

Anda kini telah 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. Contoh, https://github.com/cloud-build/test-repo.git.
  • CONNECTION_NAME adalah nama koneksi Anda.
  • REGION adalah region untuk koneksi Anda.

Sekarang Anda telah menautkan repositori ke koneksi GitHub.

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 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. Contoh, https://github.com/myuser/myrepo.git.

Sekarang Anda telah menautkan repositori ke koneksi GitHub.

Langkah selanjutnya