Halaman ini menjelaskan webhook Secure Source Manager. Untuk menyiapkan webhook, ikuti petunjuk di Menyiapkan webhook.
Webhook adalah permintaan HTTP yang dipicu oleh peristiwa di repositori Secure Source Manager, lalu dikirim ke URL yang ditentukan pengguna.
Setelan webhook
Webhook hanya dapat dikonfigurasi di antarmuka web Secure Source Manager. Kolom berikut dapat dikonfigurasi:
- ID Kait
- Nama webhook yang dapat dibaca manusia. ID hook harus mengikuti konvensi penamaan resource. Nama ini hanya boleh berisi huruf kecil, angka, atau tanda hubung, harus diawali dengan huruf, dan tidak dapat diubah setelah webhook dibuat.
- URL Target
- URL target webhook. Target webhook adalah URL terbuka dan publik.
- String kueri sensitif
String kueri sensitif dilampirkan ke akhir URL target dalam format
TARGET_URL?SENSITIVE_QUERY_STRING
.Sebagian besar layanan menyediakan token atau secret untuk memastikan bahwa permintaan yang masuk berasal dari layanan yang diotorisasi. Untuk memverifikasi permintaan, Anda dapat menyimpan token atau secret yang diperlukan di string kueri sensitif.
- Dipicu saat
Peristiwa untuk memicu permintaan webhook. Opsi yang tersedia adalah Push untuk memicu saat push ke repositori, atau Pull request state changed untuk memicu saat pull request dibuka, ditutup, dibuka kembali, atau diedit.
- Filter ref Git untuk peristiwa push
Filter untuk menentukan cabang mana yang akan dilaporkan untuk peristiwa push yang ditentukan sebagai pola glob. Lihat dokumentasi glob untuk mengetahui sintaksisnya.
- Aktif
Webhook mengirim permintaan pada peristiwa pemicu saat dipilih. Jika tidak dipilih, tidak ada permintaan yang dikirim.
Menguji webhook
Setelah mengonfigurasi webhook, Anda dapat menguji webhook menggunakan tombol Test Delivery di tab webhook.
Contoh informasi acara
Contoh berikut menunjukkan informasi peristiwa yang dikirim oleh Secure Source Manager ke URL target untuk berbagai peristiwa webhook.
Payload peristiwa push
Isi payload peristiwa push mirip dengan berikut ini:
Header
Request URL: https://example.com?{sensitive_query_string_placeholder} Request method: POST Content-Type: application/json X-SecureSourceManager-Delivery: 6546af81-25c6-46d9-aa41-70c00dc67752 X-SecureSourceManager-Event: push X-SecureSourceManager-Signature:
Isi
{ "secret": "", "ref": "refs/heads/main", "before": "f22fe95d6097bc18ba2ace7c5808ef53c0211a2e", "after": "85c7e78e6dfb63bcad4a0bb0953c0b3554ed0e93", "compare_url": "https://my-instance-123456789.us-central1.sourcemanager.dev/my-project/my-repo/compare/f22fe95d6097bc18ba2ace7c5808ef53c0211a2e...85c7e78e6dfb63bcad4a0bb0953c0b3554ed0e93", "commits": [ { "id": "85c7e78e6dfb63bcad4a0bb0953c0b3554ed0e93", "message": "Push Event'\n", "url": "https://my-instance-123456789.us-central1.sourcemanager.dev/my-project/my-repo/commit/85c7e78e6dfb63bcad4a0bb0953c0b3554ed0e93", "author": { "name": "user", "email": "user@example.com", "username": "user@example.com" }, "committer": { "name": "user", "email": "user@example.com", "username": "user@example.com" }, "verification": null, "timestamp": "2024-07-03T18:27:38Z", "added": [], "removed": [], "modified": [ "README.md" ] } ], "head_commit": null, "repository": { "id": 4, "owner": {"id":2,"login":"my-project","full_name":"","email":"email-address@example.com","avatar_url":"b2653dbf52c7e078e04b8b20020eaadeafe0337787cc0e19b976efc8d594aefb","language":"","is_admin":false,"last_login":"1970-01-01T00:00:00Z","created":"2023-06-02T14:18:40Z","restricted":false,"username":"my-project"}, "name": "my-repo", "full_name": "my-project/my-repo", "description": "", "empty": false, "private": false, "fork": false, "template": false, "parent": null, "mirror": false, "size": 4, "html_url": "https://my-instance-123456789.us-central1.sourcemanager.dev/my-project/my-repo", "ssh_url": "git@my-instance-123456789-ssh.us-central1.sourcemanager.dev:my-project/my-repo.git", "clone_url": "https://my-instance-123456789-git.us-central1.sourcemanager.dev/my-project/my-repo.git", "original_url": "", "website": "", "stars_count": 0, "forks_count": 0, "watchers_count": 1, "open_issues_count": 0, "open_pr_counter": 1, "release_counter": 1, "default_branch": "main", "archived": false, "created_at": "2023-06-06T20:34:36Z", "updated_at": "2024-04-04T18:19:14Z", "permissions": { "admin": true, "push": true, "pull": true }, "has_issues": true, "internal_tracker": { "enable_time_tracker": false, "allow_only_contributors_to_track_time": true, "enable_issue_dependencies": true }, "has_wiki": true, "has_pull_requests": true, "has_projects": true, "ignore_whitespace_conflicts": false, "allow_merge_commits": true, "allow_rebase": true, "allow_rebase_explicit": true, "allow_squash_merge": true, "avatar_url": "", "internal": false, "mirror_interval": "", "uris": { "api": "https://my-instance-123456789-api.us-central1.sourcemanager.dev/v1/projects/my-project/locations/us-central1/repositories/my-repo", "html": "https://my-instance-123456789.us-central1.sourcemanager.dev/my-project/my-repo", "git_https": "https://my-instance-123456789-git.us-central1.sourcemanager.dev/my-project/my-repo.git" } }, "pusher": {"id":4,"login":"user@example.com","full_name":"user","email":"user@example.com","avatar_url":"https://this-is-avatar.com","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2023-06-02T20:53:58Z","restricted":false,"username":"user@example.com"}, "sender": {"id":4,"login":"user@example.com","full_name":"user","email":"user@example.com","avatar_url":"https://this-is-avatar.com","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2023-06-02T20:53:58Z","restricted":false,"username":"user@example.com"} }
Payload peristiwa penarikan
Isi payload peristiwa penarikan mirip dengan berikut ini.
Header
Request URL: https://example.com?{sensitive_query_string_placeholder} Request method: POST Content-Type: application/json X-SecureSourceManager-Delivery: d7bb9273-17cf-431d-835c-b334c9702eee X-SecureSourceManager-Event: pull_request X-SecureSourceManager-Signature:
Isi
{ "secret": "", "action": "opened", "number": 4, "pull_request": { "id": 18, "url": "https://my-instance-123456789.us-central1.sourcemanager.dev/my-project/my-repo/pulls/4", "number": 4, "user": {"id":4,"login":"user@example.com","full_name":"user","email":"user@example.com","avatar_url":"https://page-address.com","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2023-06-02T20:53:58Z","restricted":false,"username":"user@example.com"}, "title": "Open a Pull Request'", "body": "", "labels": [], "milestone": null, "assignee": null, "assignees": null, "state": "open", "is_locked": false, "comments": 0, "html_url": "https://my-instance-123456789.us-central1.sourcemanager.dev/cloud-git-test-pso-instance/test2/pulls/4", "diff_url": "https://my-instance-123456789.us-central1.sourcemanager.dev/my-project/my-repo/pulls/4.diff", "patch_url": "https://my-instance-123456789.us-central1.sourcemanager.dev/my-project/my-repo/pulls/4.patch", "mergeable": false, "merged": false, "merged_at": null, "merge_commit_sha": null, "merged_by": null, "base": { "label": "main", "ref": "main", "sha": "85c7e78e6dfb63bcad4a0bb0953c0b3554ed0e93", "repo_id": 4, "repo": { "id": 4, "owner": {"id":2,"login":"my-project","full_name":"","email":"email-address@example.com","avatar_url":"b2653dbf52c7e078e04b8b20020eaadeafe0337787cc0e19b976efc8d594aefb","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2023-06-02T14:18:40Z","restricted":false,"username":"my-project"}, "name": "my-repo", "full_name": "my-project/my-repo", "description": "", "empty": false, "private": false, "fork": false, "template": false, "parent": null, "mirror": false, "size": 4, "html_url": "https://my-instance-123456789.us-central1.sourcemanager.dev/my-project/my-repo", "ssh_url": "git@my-instance-123456789-ssh.us-central1.sourcemanager.dev:my-project/my-repo.git", "clone_url": "https://my-instance-123456789-git.us-central1.sourcemanager.dev/my-project/my-repo.git", "original_url": "", "website": "", "stars_count": 0, "forks_count": 0, "watchers_count": 1, "open_issues_count": 0, "open_pr_counter": 0, "release_counter": 1, "default_branch": "main", "archived": false, "created_at": "2023-06-06T20:34:36Z", "updated_at": "2024-07-03T18:27:42Z", "permissions": { "admin": false, "push": false, "pull": false }, "has_issues": true, "internal_tracker": { "enable_time_tracker": false, "allow_only_contributors_to_track_time": true, "enable_issue_dependencies": true }, "has_wiki": true, "has_pull_requests": true, "has_projects": true, "ignore_whitespace_conflicts": false, "allow_merge_commits": true, "allow_rebase": true, "allow_rebase_explicit": true, "allow_squash_merge": true, "avatar_url": "", "internal": false, "mirror_interval": "", "uris": { "api": "https://my-instance-123456789-api.us-central1.sourcemanager.dev/v1/projects/my-project/locations/us-central1/repositories/my-repo", "html": "https://my-instance-123456789.us-central1.sourcemanager.dev/my-project/my-repo", "git_https": "https://my-instance-123456789-git.us-central1.sourcemanager.dev/my-project/my-repo.git" } } }, "head": { "label": "dev", "ref": "dev", "sha": "06aa2c971d8e06e5271ce04248ef1920341ce208", "repo_id": 4, "repo": { "id": 4, "owner": {"id":2,"login":"my-project","full_name":"","email":"email-address@example.com","avatar_url":"b2653dbf52c7e078e04b8b20020eaadeafe0337787cc0e19b976efc8d594aefb","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2023-06-02T14:18:40Z","restricted":false,"username":"my-project"}, "name": "my-repo", "full_name": "my-project/my-repo", "description": "", "empty": false, "private": false, "fork": false, "template": false, "parent": null, "mirror": false, "size": 4, "html_url": "https://my-instance-123456789.us-central1.sourcemanager.dev/my-project/my-repo", "ssh_url": "git@my-instance-123456789-ssh.us-central1.sourcemanager.dev:my-project/my-repo.git", "clone_url": "https://my-instance-123456789-git.us-central1.sourcemanager.dev/my-project/my-repo.git", "original_url": "", "website": "", "stars_count": 0, "forks_count": 0, "watchers_count": 1, "open_issues_count": 0, "open_pr_counter": 0, "release_counter": 1, "default_branch": "main", "archived": false, "created_at": "2023-06-06T20:34:36Z", "updated_at": "2024-07-03T18:27:42Z", "permissions": { "admin": false, "push": false, "pull": false }, "has_issues": true, "internal_tracker": { "enable_time_tracker": false, "allow_only_contributors_to_track_time": true, "enable_issue_dependencies": true }, "has_wiki": true, "has_pull_requests": true, "has_projects": true, "ignore_whitespace_conflicts": false, "allow_merge_commits": true, "allow_rebase": true, "allow_rebase_explicit": true, "allow_squash_merge": true, "avatar_url": "", "internal": false, "mirror_interval": "", "uris": { "api": "https://my-instance-123456789-api.us-central1.sourcemanager.dev/v1/projects/my-project/locations/us-central1/repositories/my-repo", "html": "https://my-instance-123456789.us-central1.sourcemanager.dev/my-project/my-repo", "git_https": "https://my-instance-123456789-git.us-central1.sourcemanager.dev/my-project/my-repo.git" } } }, "merge_base": "af065efa8d3d7549154c560da5cb3ec236ad3002", "due_date": null, "created_at": "2024-07-03T18:40:21Z", "updated_at": "2024-07-03T18:40:21Z", "closed_at": null }, "repository": { "id": 4, "owner": {"id":2,"login":"my-project","full_name":"","email":"email-address@example.com","avatar_url":"b2653dbf52c7e078e04b8b20020eaadeafe0337787cc0e19b976efc8d594aefb","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2023-06-02T14:18:40Z","restricted":false,"username":"my-project"}, "name": "my-repo", "full_name": "my-project/my-repo", "description": "", "empty": false, "private": false, "fork": false, "template": false, "parent": null, "mirror": false, "size": 4, "html_url": "https://my-instance-123456789.us-central1.sourcemanager.dev/my-project/my-repo", "ssh_url": "git@my-instance-123456789-ssh.us-central1.sourcemanager.dev:my-project/my-repo.git", "clone_url": "https://my-instance-123456789-git.us-central1.sourcemanager.dev/my-project/my-repo.git", "original_url": "", "website": "", "stars_count": 0, "forks_count": 0, "watchers_count": 1, "open_issues_count": 0, "open_pr_counter": 1, "release_counter": 1, "default_branch": "main", "archived": false, "created_at": "2023-06-06T20:34:36Z", "updated_at": "2024-07-03T18:27:42Z", "permissions": { "admin": false, "push": false, "pull": true }, "has_issues": true, "internal_tracker": { "enable_time_tracker": false, "allow_only_contributors_to_track_time": true, "enable_issue_dependencies": true }, "has_wiki": true, "has_pull_requests": true, "has_projects": true, "ignore_whitespace_conflicts": false, "allow_merge_commits": true, "allow_rebase": true, "allow_rebase_explicit": true, "allow_squash_merge": true, "avatar_url": "", "internal": false, "mirror_interval": "", "uris": { "api": "https://my-instance-123456789-api.us-central1.sourcemanager.dev/v1/projects/my-project/locations/us-central1/repositories/my-repo", "html": "https://my-instance-123456789.us-central1.sourcemanager.dev/my-project/my-repo", "git_https": "https://my-instance-123456789-git.us-central1.sourcemanager.dev/my-project/my-repo.git" } }, "sender": {"id":4,"login":"user@example.com","full_name":"user","email":"user@example.com","avatar_url":"https://this-is-avatar.com","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2023-06-02T20:53:58Z","restricted":false,"username":"user@example.com"}, "review": null }
Langkah berikutnya
- Gunakan webhook untuk terhubung ke Jenkins.
- Menyiapkan webhook.