Mengotomatiskan build sebagai respons terhadap peristiwa webhook

Cloud Build memungkinkan Anda menentukan pemicu webhook, yang dapat melakukan autentikasi dan menerima peristiwa webhook masuk. Peristiwa ini, yang dikirim ke URL kustom, memungkinkan Anda langsung menghubungkan sistem eksternal dan sistem manajemen kode sumber eksternal seperti Bitbucket.com, Bitbucket Server, atau GitLab, ke Cloud Build melalui peristiwa webhook.

Dengan pemicu webhook, Anda dapat menentukan file konfigurasi build inline, bukan menentukan sumber saat membuat pemicu. Konfigurasi build inline memungkinkan Anda mengontrol operasi git dan menentukan build lainnya.

Halaman ini menguraikan cara membuat pemicu webhook untuk mengotomatiskan build sebagai respons terhadap peristiwa webhook.

Sebelum memulai

  • Enable the Cloud Build and Secret Manager APIs.

    Enable the APIs

  • Untuk menggunakan perintah gcloud di halaman ini, instal Google Cloud CLI.

Membuat pemicu webhook

Konsol

Untuk membuat pemicu webhook menggunakan Konsol Google Cloud:

  1. Buka halaman Pemicu:

    Buka halaman Pemicu build

  2. Pilih project Anda dari bagian atas halaman, lalu klik Buka.

  3. Klik Create trigger.

  4. Masukkan setelan pemicu berikut:

    • Nama: Nama untuk pemicu Anda.
    • Region: Pilih region untuk pemicu Anda.

      • Jika file konfigurasi build yang terkait dengan pemicu menentukan kumpulan pribadi, Cloud Build akan menggunakan kumpulan pribadi untuk menjalankan build Anda. Dalam hal ini, region yang Anda tentukan di pemicu harus cocok dengan region tempat Anda membuat kumpulan pribadi.
      • Jika file konfigurasi build yang terkait dengan pemicu tidak menentukan kumpulan pribadi, Cloud Build akan menggunakan kumpulan default untuk menjalankan build di region yang sama dengan pemicu Anda.
    • Deskripsi (Opsional): Deskripsi untuk pemicu Anda.

    • Peristiwa: Pilih Peristiwa webhook untuk menyiapkan pemicu Anda guna memulai build sebagai respons terhadap peristiwa webhook yang masuk.

    • URL webhook: Gunakan URL webhook untuk mengautentikasi peristiwa webhook masuk.

      • Rahasia: Anda memerlukan rahasia untuk mengautentikasi peristiwa webhook yang masuk. Anda dapat membuat secret baru atau menggunakan secret yang sudah ada. Rahasia ini terpisah dari rahasia yang terkait dengan kunci SSH Anda.

        Untuk membuat secret baru:

        1. Pilih Use a new secret (generated by Cloud Build).
        2. Klik Buat Secret.

          Anda akan melihat kotak pop-up Create a webhook secret.

        3. Di kolom Secret name, masukkan nama untuk secret Anda.

        4. Klik Create secret untuk menyimpan secret, yang akan otomatis dibuat dan disimpan untuk Anda di Secret Manager.

        Untuk menggunakan secret yang ada:

        1. Pilih Gunakan secret yang ada atau buat secret Anda sendiri.
        2. Di kolom Secret, pilih nama secret yang ingin Anda gunakan dari menu drop-down atau ikuti petunjuk untuk menambahkan secret berdasarkan ID resource.
        3. Di kolom Versi secret, pilih versi secret Anda dari menu drop-down.

        Jika menggunakan secret yang ada, Anda mungkin perlu memberikan peran Secret Manager Secret Accessor secara manual ke akun layanan Cloud Build, service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Untuk mempelajari lebih lanjut, lihat Memberikan peran Secret Manager ke akun layanan Anda.

      Setelah membuat atau memilih secret, Anda akan melihat pratinjau URL Webhook. URL Anda akan berisi kunci API yang dihasilkan oleh Cloud Build dan secret Anda. Jika Cloud Build tidak dapat mengambil kunci API, Anda dapat menambahkan kunci API secara manual ke URL atau mempelajari cara mendapatkan kunci API jika belum memilikinya.

      Anda dapat menggunakan URL untuk memanggil peristiwa webhook dengan membuat permintaan HTTP menggunakan metode POST.

      Gunakan perintah berikut untuk memanggil peristiwa webhook:

      curl -X POST -H "Content-type: application/json" "https://cloudbuild.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/triggers/${TRIGGER_NAME}:webhook?key=${API_KEY}&secret=${SECRET_VALUE}&trigger=${TRIGGER_NAME}&projectId=${PROJECT_ID}" -d "{}"
      

      Setelah menyelesaikan langkah-langkah ini, peran Secret Manager Secret Accessor akan otomatis diberikan ke agen layanan Cloud Build Anda, service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Jika Anda tidak melihat peran ini ditambahkan secara otomatis ke agen layanan, selesaikan langkah-langkah berikut yang diuraikan dalam Memberikan peran Secret Manager ke akun layanan.

    • Sumber (opsional): Pilih sumber yang akan dibuat saat pemicu webhook berjalan. Jika menentukan konfigurasi build inline, Anda tidak perlu menentukan sumber berikut. Anda dapat menentukan generasi ke-1 atau generasi ke-2 sebagai sumber Anda. Untuk mempelajari lebih lanjut, lihat repositori Cloud Build.

      • Repositori: Dari daftar repositori yang tersedia, pilih repositori yang diinginkan.

      • Cabang atau Tag: Tentukan ekspresi reguler dengan cabang atau nilai tag yang akan dicocokkan. Untuk mengetahui informasi mengenai sintaksis ekspresi reguler yang dapat diterima, lihat sintaksis RE2.

      • Kontrol komentar: Jika Anda memilih Permintaan pull (khusus Aplikasi GitHub) sebagai Peristiwa, pilih salah satu opsi berikut untuk mengontrol apakah build akan otomatis dijalankan oleh pemicu:

        • Wajib kecuali untuk pemilik dan kolaborator: Saat permintaan pull dibuat atau diperbarui oleh pemilik atau kolaborator repositori, build akan otomatis dieksekusi oleh pemicu. Jika kontributor eksternal memulai tindakan, build hanya akan dieksekusi setelah pemilik atau kolaborator mengomentari /gcbrun pada permintaan pull.

        • Wajib: Saat permintaan pull dibuat atau diperbarui oleh kontributor, build hanya akan dieksekusi setelah pemilik atau kollaborator memberikan komentar /gcbrun pada permintaan pull. Build dieksekusi setiap kali perubahan pada permintaan pull dilakukan.

        • Tidak diperlukan: Saat permintaan pull dibuat atau diperbarui oleh kontributor, build akan otomatis dieksekusi oleh pemicu.

    • Konfigurasi: Pilih file konfigurasi build yang berada di repositori jarak jauh Anda atau buat file konfigurasi build inline untuk digunakan dalam build Anda. Jika tidak menentukan repositori sumber, Anda harus memilih file konfigurasi build Inline sebagai opsi konfigurasi.

      • Type: Pilih jenis konfigurasi yang akan digunakan untuk build Anda.
        • File konfigurasi Cloud Build (yaml atau json): Gunakan file konfigurasi build untuk konfigurasi Anda.
        • Dockerfile: Gunakan Dockerfile untuk konfigurasi Anda.
        • Buildpack: Gunakan buildpacks untuk konfigurasi Anda.
      • Lokasi: Tentukan lokasi untuk konfigurasi Anda.

        • Repositori: Jika file konfigurasi Anda berada di repositori jarak jauh, berikan lokasi file konfigurasi build, direktori Dockerfile, atau direktori buildpack. Jika jenis konfigurasi build Anda adalah Dockerfile atau buildpack, Anda harus memberikan nama untuk gambar yang dihasilkan dan, secara opsional, waktu tunggu untuk build Anda. Setelah memberikan nama image Dockerfile atau buildpack, Anda akan melihat pratinjau perintah docker build atau pack yang akan dieksekusi build Anda.
        • Variabel lingkungan buildpack (opsional): Jika Anda memilih buildpacks sebagai jenis konfigurasi, klik Tambahkan variabel lingkungan paket untuk menentukan variabel dan nilai lingkungan buildpack Anda. Untuk mempelajari lebih lanjut variabel lingkungan buildpack, lihat Variabel lingkungan.
        • Inline: Jika memilih File konfigurasi Cloud Build (yaml atau json) sebagai opsi konfigurasi, Anda dapat menentukan konfigurasi build secara langsung. Klik Buka Editor untuk menulis file konfigurasi build di konsol Google Cloud menggunakan sintaksis YAML atau JSON. Klik Done untuk menyimpan konfigurasi build Anda.

      Dalam contoh berikut, log file konfigurasi build inline menampilkan "hello world":

       steps:
       - name: 'ubuntu'
         args: ['echo', 'hello world']
      
    • Penggantian (opsional): Jika Anda memilih file konfigurasi build sebagai opsi konfigurasi build atau membuat file konfigurasi build inline, Anda dapat memilih untuk menentukan variabel penggantian khusus pemicu menggunakan kolom ini. Anda juga dapat memperoleh data menggunakan binding payload saat menentukan nilai variabel penggantian.

    • Filter (opsional): Anda dapat membuat aturan dalam pemicu yang menentukan apakah pemicu akan mengeksekusi build berdasarkan variabel substitusi atau tidak.

  5. Klik Create untuk membuat pemicu build.

gcloud

(Opsional) Mendapatkan kunci API

Untuk mengautentikasi peristiwa webhook masuk, Anda memerlukan kunci API.

Untuk mendapatkan kunci API:

  1. Buka halaman Credentials di konsol Google Cloud:

    Buka halaman Credentials

  2. Klik Buat kredensial.

  3. Klik API Key.

    Anda akan melihat dialog dengan kunci API yang dibuat. Catat kunci API Anda.

  4. Jika Anda ingin membatasi kunci untuk aplikasi produk, klik Batasi kunci untuk menyelesaikan langkah-langkah tambahan guna mengamankan kunci Anda. Jika tidak, klik Tutup.

    Untuk mempelajari cara membatasi kunci, lihat Menerapkan pembatasan kunci API.

(Opsional) Memberikan peran Secret Manager ke akun layanan Anda

Cloud Build otomatis memberikan peran Secret Manager Secret Accessor ke akun layanan yang memerlukan peran tersebut selama konfigurasi secret. Jika Anda tidak melihat peran ini otomatis diberikan ke akun layanan yang diperlukan, selesaikan langkah-langkah berikut untuk menambahkan peran secara manual sehingga akun layanan Anda memiliki akses ke secret:

  1. Buka halaman IAM di konsol Google Cloud:

    Buka halaman IAM

  2. Opsional: Untuk melihat akun yang disediakan Google, pilih kotak centang Sertakan pemberian peran yang disediakan Google.

  3. Catat akun layanan build yang ingin Anda beri peran.

  4. Buka halaman Secret Manager di konsol Google Cloud:

    Buka halaman Secret Manager

  5. Klik nama secret Anda.

    Anda akan melihat halaman Secret details.

    1. Klik tab Izin.

    2. Klik Berikan akses.

      Anda akan melihat panel Berikan akses.

    3. Di bagian Add Principals, tambahkan email yang terkait dengan akun layanan build.

    4. Di bagian Tetapkan peran, pilih Secret Manager > Secret Manager Secret Accessor.

    5. Klik Simpan.

Langkah selanjutnya