Mengotomatiskan build sebagai respons terhadap peristiwa webhook

Cloud Build memungkinkan Anda menentukan pemicu webhook, yang dapat mengautentikasi dan menerima peristiwa webhook yang masuk. Peristiwa ini, yang dikirim ke URL kustom, memungkinkan Anda untuk langsung menghubungkan sistem eksternal dan sistem pengelolaan 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 memiliki kontrol atas operasi git dan menentukan build lainnya.

Halaman ini menjelaskan 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 Open.

  3. Klik Create trigger.

  4. Masukkan setelan pemicu berikut:

    • Nama: Nama pemicu Anda.
    • Region: Pilih wilayah 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 dalam 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 agar memulai build sebagai respons terhadap peristiwa webhook yang masuk.

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

      • Secret: Anda akan memerlukan secret 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 Nama rahasia, masukkan nama untuk rahasia Anda.

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

        Untuk menggunakan secret yang ada:

        1. Pilih Gunakan rahasia yang ada atau buat rahasia Anda sendiri.
        2. Di kolom Secret, pilih nama rahasia yang ingin Anda gunakan dari menu drop-down, atau ikuti petunjuk untuk menambahkan rahasia berdasarkan ID resource.
        3. Di kolom Secret version, 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 Anda, 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 rahasia, Anda akan melihat Pratinjau URL webhook. URL Anda akan berisi kunci API yang dihasilkan oleh Cloud Build dan rahasia 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 akun layanan Cloud Build Anda, service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Jika Anda tidak melihat peran ini ditambahkan secara otomatis ke akun layanan Anda, selesaikan langkah-langkah berikut yang dijelaskan dalam Memberikan peran Secret Manager ke akun layanan Anda.

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

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

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

      • Comment control: Jika Anda memilih Pull request (GitHub App only) sebagai Event, 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 repositori atau kolaborator, build akan otomatis dijalankan oleh pemicu. Jika kontributor eksternal memulai tindakan, build hanya akan dijalankan setelah pemilik atau kolaborator mengomentari /gcbrun pada permintaan pull.

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

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

    • Konfigurasi: Pilih file konfigurasi build yang berada di repositori jarak jauh atau buat file konfigurasi build inline untuk digunakan pada 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.
        • Cloud Build configuration file (yaml atau json): Menggunakan file konfigurasi build untuk konfigurasi Anda.
        • Dockerfile: Gunakan Dockerfile untuk konfigurasi Anda.
        • Buildpacks: Gunakan buildpacks untuk konfigurasi Anda.
      • Location: Menentukan lokasi untuk konfigurasi Anda.

        • Repositori: Jika file konfigurasi Anda berada di repositori jarak jauh, berikan lokasi file konfigurasi build, direktori Dockerfile, atau direktori buildpacks. Jika jenis konfigurasi build adalah Dockerfile atau buildpack, Anda harus memberi nama untuk image yang dihasilkan dan, jika perlu, waktu tunggu untuk build. Setelah memberikan nama image Dockerfile atau buildpack, Anda akan melihat pratinjau perintah docker build atau pack yang akan dijalankan 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 variabel lingkungan buildpack lebih lanjut, lihat Variabel lingkungan.
        • Inline: Jika memilih Cloud Build configuration file (yaml atau json) sebagai opsi konfigurasi, Anda dapat menentukan konfigurasi build secara inline. Klik Open Editor untuk menulis file konfigurasi build di Google Cloud Console menggunakan sintaksis YAML atau JSON. Klik Done untuk menyimpan konfigurasi build Anda.

      Pada contoh berikut, file konfigurasi build inline membuat log menggemakan "hello world":

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

    • Filter (opsional): Anda dapat membuat aturan dalam pemicu yang menentukan apakah pemicu Anda akan menjalankan 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 Kunci API.

    Anda akan melihat dialog berisi kunci API yang telah dibuat. Catat kunci API Anda.

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

    Untuk mempelajari cara membatasi kunci Anda, 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 diberikan secara otomatis ke akun layanan yang diperlukan, selesaikan langkah-langkah berikut untuk menambahkan peran secara manual agar akun layanan memiliki akses ke secret Anda:

  1. Buka halaman IAM di Konsol Google Cloud:

    Buka halaman IAM

  2. Catat akun layanan Cloud Build yang ingin Anda berikan peran tersebut.

  3. Buka halaman Secret Manager di konsol Google Cloud:

    Buka halaman Secret Manager

  4. Klik nama rahasia Anda.

    Anda akan melihat halaman Detail rahasia.

    1. Klik tab Izin.

    2. Klik Berikan akses.

      Anda akan melihat panel Berikan akses.

    3. Di bagian Tambahkan Utama, tambahkan email yang terkait dengan akun layanan Cloud Build Anda.

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

    5. Klik Simpan.

Langkah selanjutnya