Menyiapkan webhook

Halaman ini menjelaskan cara menyiapkan webhook di Secure Source Manager.

Webhook adalah permintaan HTTP yang dipicu oleh peristiwa di Secure Source Manager, dan dikirim ke URL yang ditentukan pengguna.

Sebelum memulai

  1. Buat instance Secure Source Manager.
  2. Buat repositori Secure Source Manager.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk membuat webhook, minta administrator untuk memberi Anda peran IAM berikut:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Untuk mengetahui informasi tentang cara memberikan peran Secure Source Manager, lihat Kontrol akses dengan IAM dan Memberikan akses instance kepada pengguna.

Menyiapkan webhook

Konsol

  1. Di antarmuka web Secure Source Manager, buka repositori yang ingin Anda buat webhook-nya.
  2. Klik Setelan.
  3. Klik Webhooks, lalu klik Add webhook.
  4. Di kolom Hook ID, masukkan ID untuk webhook.

  5. Di kolom Target URL, masukkan URL Webhook. Misalnya, jika Anda ingin memicu build di Jenkins, Anda dapat Menyiapkan pemicu webhook, lalu masukkan URL pemicu Jenkins di sini untuk memicu build di Jenkins.

  6. Di bagian Picu pada, pilih salah satu opsi berikut:

    • Push: untuk memicu saat mengirim ke repositori.
    • Status permintaan pull berubah: untuk dipicu saat terjadi perubahan pada status permintaan pull.
  7. Konfigurasi autentikasi webhook menggunakan string kueri sensitif atau autentikasi akun layanan:

    • String kueri sensitif:

      String kueri sensitif Anda terdiri dari nilai key dan secret dari URL webhook Anda, termasuk awalan key= dan secret=. Untuk mengonfigurasi otorisasi string kueri sensitif, Anda harus menghapus nilai ini dari URL webhook dan menambahkannya ke kolom String Kueri Sensitif:

      1. Hapus ? dari URL webhook Anda.
      2. Salin bagian URL yang tersisa, dimulai dengan key=.
      3. Tempelkan bagian ini ke kolom Sensitive Query String.
      4. Hapus bagian yang sama dari URL webhook Anda.

      Misalnya, dengan URL berikut: https://cloudbuild.googleapis.com/v1/projects/my-project/triggers/test-trigger:webhook?key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=My%20Secret%20

      String kueri sensitif Anda adalah: key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=My%20Secret%20

    • Autentikasi akun layanan:

      1. Pastikan repositori Anda memiliki akun layanan dengan peran IAM yang ditentukan untuk autentikasi akun layanan di Peran yang diperlukan.
      2. Pilih Aktifkan autentikasi akun layanan.
  8. Jika Anda memilih Push, Anda dapat memasukkan daftar yang diizinkan untuk peristiwa push di kolom Filter cabang.

    Kolom Filter cabang menggunakan pola glob dan hanya operasi pada cabang yang cocok yang akan menyebabkan pemicu build. Misalnya, {main,dev} dipicu pada peristiwa push ke cabang main dan dev. Jika kolom kosong atau *, maka peristiwa push untuk semua cabang akan dilaporkan. Untuk mengetahui informasi tentang sintaksis, lihat dokumentasi glob.

  9. Klik Tambahkan webhook.

  10. Webhook ditampilkan di halaman Webhook.

REST

Untuk membuat webhook, panggil metode hooks.create dengan mengirimkan permintaan POST ke endpoint hooks. Anda dapat mengautentikasi webhook menggunakan string kueri sensitif atau autentikasi akun layanan.

  • String kueri sensitif

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "targetUri": "https://${SERVICE_NAME}.app/webhook?key=${KEY}&secret=${SECRET}",
        "events": ["PUSH"]
        "sensitiveQueryString": "${SENSITIVE_QUERY_STRING_VALUE}"
      }' \
      "https://securesourcemanager.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/repositories/${REPOSITORY}/hooks?hook_id=${HOOK_ID}"
    

    SENSITIVE_QUERY_STRING_VALUE Anda harus berupa nilai key dan secret di URL webhook Anda. Misalnya, jika key Anda adalah eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf dan secret Anda adalah MySecret, maka SENSITIVE_QUERY_STRING_VALUE Anda harus key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=MySecret.

  • Autentikasi akun layanan

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "targetUri": "https://${SERVICE_NAME}.app/webhook",
        "events": ["PUSH"],
        "serviceAccountAuth": true
      }' \
      "https://securesourcemanager.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/repositories/${REPOSITORY}/hooks?hook_id=${HOOK_ID}"
    

Menguji webhook Anda

  1. Di halaman Webhook Secure Source Manager, klik webhook yang ingin Anda uji.
  2. Buka bagian bawah halaman, lalu klik Uji pengiriman.

    Acara placeholder ditambahkan ke antrean penayangan. Mungkin perlu waktu beberapa detik sebelum muncul di histori pengiriman.

  3. Anda juga dapat menggunakan perintah git untuk mengirim atau menggabungkan permintaan pull untuk menguji webhook.

  4. Periksa status build atau peristiwa yang dipicu dalam histori build layanan tempat Anda mengonfigurasi pemicu webhook.

  5. Anda juga dapat melihat Permintaan dan Respons terhadap penayangan pengujian di bagian Penayangan terbaru di halaman webhook Secure Source Manager setelah Anda mengirimkan penayangan pengujian pertama.

Mengganti variabel YAML Cloud Build dengan data payload

Jika Anda menggunakan webhook untuk terhubung ke Cloud Build, Anda dapat mengganti variabel YAML Cloud Build dengan data payload webhook Secure Source Manager.

  1. Di halaman Webhook Secure Source Manager, di bagian Pengiriman terbaru, klik baris teratas.

    Header dan konten Request yang dikirim oleh payload webhook akan ditampilkan.

  2. Buka dasbor Cloud Build, lalu klik Triggers.

  3. Klik pemicu yang ingin Anda konfigurasi.

  4. Di Advanced section, di bagian Substitution variables, klik + Add variable.

  5. Masukkan nama dan nilai variabel. Awalan nilai adalah body.

    Misalnya, untuk mengganti _REPO_URL dengan kolom data payload repository.clone_url dan _COMMIT_SHA dengan SHA commit terbaru di Cloud Build YAML, masukkan nama dan nilai berikut:

    • Variabel 1: _REPO_URL Nilai 1: $(body.repository.clone_url)
    • Variabel 2: _COMMIT_SHA Nilai 2: $(body.after)

    File YAML Cloud Build akan terlihat seperti berikut:

    steps:
    - name: gcr.io/cloud-builders/git
      env:
      - '_REPO_URL=$_REPO_URL'
      - '_COMMIT_SHA=$_COMMIT_SHA'
      script: |
        #!/bin/sh
        git clone ${_REPO_URL} /workspace
        cd /workspace
        git reset --hard ${_COMMIT_SHA}
    

Langkah berikutnya