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
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk membuat webhook, minta administrator untuk memberi Anda peran IAM berikut:
-
Mengautentikasi webhook menggunakan string kueri sensitif:
- Admin Repositori Secure Source Manager (
roles/securesourcemanager.repoAdmin) di repositori Secure Source Manager - Secure Source Manager Instance Accessor (
roles/securesourcemanager.instanceAccessor) di instance Secure Source Manager
- Admin Repositori Secure Source Manager (
-
Mengautentikasi webhook menggunakan otorisasi akun layanan:
- Pengguna Akun Layanan (
roles/iam.serviceAccountUser) di akun layanan repositori Secure Source Manager - Agen layanan SSM (
roles/iam.serviceAccountTokenCreator) di akun layanan repositori Secure Source Manager - Cloud Run Invoker (
roles/run.invoker) di layanan tujuan (hanya diperlukan jika tujuannya adalah Cloud Run)
- Pengguna Akun Layanan (
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
- Di antarmuka web Secure Source Manager, buka repositori yang ingin Anda buat webhook-nya.
- Klik Setelan.
- Klik Webhooks, lalu klik Add webhook.
Di kolom Hook ID, masukkan ID untuk webhook.
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.
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.
Konfigurasi autentikasi webhook menggunakan string kueri sensitif atau autentikasi akun layanan:
String kueri sensitif:
String kueri sensitif Anda terdiri dari nilai
keydansecretdari URL webhook Anda, termasuk awalankey=dansecret=. Untuk mengonfigurasi otorisasi string kueri sensitif, Anda harus menghapus nilai ini dari URL webhook dan menambahkannya ke kolom String Kueri Sensitif:- Hapus
?dari URL webhook Anda. - Salin bagian URL yang tersisa, dimulai dengan
key=. - Tempelkan bagian ini ke kolom Sensitive Query String.
- 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%20String kueri sensitif Anda adalah:
key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=My%20Secret%20- Hapus
Autentikasi akun layanan:
- Pastikan repositori Anda memiliki akun layanan dengan peran IAM yang ditentukan untuk autentikasi akun layanan di Peran yang diperlukan.
- Pilih Aktifkan autentikasi akun layanan.
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 cabangmaindandev. Jika kolom kosong atau*, maka peristiwa push untuk semua cabang akan dilaporkan. Untuk mengetahui informasi tentang sintaksis, lihat dokumentasi glob.Klik Tambahkan webhook.
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_VALUEAnda harus berupa nilaikeydansecretdi URL webhook Anda. Misalnya, jikakeyAnda adalaheitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngfdansecretAnda adalahMySecret, makaSENSITIVE_QUERY_STRING_VALUEAnda haruskey=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
- Di halaman Webhook Secure Source Manager, klik webhook yang ingin Anda uji.
Buka bagian bawah halaman, lalu klik Uji pengiriman.
Acara placeholder ditambahkan ke antrean penayangan. Mungkin perlu waktu beberapa detik sebelum muncul di histori pengiriman.
Anda juga dapat menggunakan perintah
gituntuk mengirim atau menggabungkan permintaan pull untuk menguji webhook.Periksa status build atau peristiwa yang dipicu dalam histori build layanan tempat Anda mengonfigurasi pemicu webhook.
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.
Di halaman Webhook Secure Source Manager, di bagian Pengiriman terbaru, klik baris teratas.
Header dan konten Request yang dikirim oleh payload webhook akan ditampilkan.
Buka dasbor Cloud Build, lalu klik Triggers.
Klik pemicu yang ingin Anda konfigurasi.
Di Advanced section, di bagian Substitution variables, klik + Add variable.
Masukkan nama dan nilai variabel. Awalan nilai adalah
body.Misalnya, untuk mengganti
_REPO_URLdengan kolom data payloadrepository.clone_urldan_COMMIT_SHAdengan SHA commit terbaru di Cloud Build YAML, masukkan nama dan nilai berikut:- Variabel 1:
_REPO_URLNilai 1:$(body.repository.clone_url) - Variabel 2:
_COMMIT_SHANilai 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}- Variabel 1: