Webhook の概要

このページでは、Secure Source Manager の Webhook について説明します。webhook を設定するには、webhook を設定するの手順に沿って操作します。

Webhook は、Secure Source Manager リポジトリのイベントによってトリガーされ、ユーザーが指定した URL に送信される HTTP リクエストです。

Webhook の設定

Webhook は、Secure Source Manager ウェブ インターフェースでのみ構成できます。次のフィールドを構成できます。

フック ID
人が読める形式の Webhook 名。フック ID は、リソースの命名規則に従う必要があります。小文字、数字、ダッシュのみを使用する必要があります。先頭は英字にする必要があり、Webhook の作成後に変更することはできません。
ターゲット URL
Webhook ターゲット URL。Webhook ターゲットはオープンな公開 URL です。
機密性の高いクエリ文字列

機密性の高いクエリ文字列は、TARGET_URL?SENSITIVE_QUERY_STRING 形式でターゲット URL の末尾に追加されます。

ほとんどのサービスは、受信リクエストが承認済みのサービスからのものであることを確認するためにトークンまたはシークレットを提供します。リクエストを検証するために、必要なトークンまたはシークレットを機密性の高いクエリ文字列に保存できます。

トリガー対象

Webhook リクエストをトリガーするイベント。オプションは、リポジトリへの push でトリガーする Push と、pull リクエストのオープン、クローズ、再オープン、編集でトリガーする Pull request state changed です。

push イベントの Git 参照フィルタ

glob パターンとして指定された push イベントについてレポートするブランチを指定するフィルタ。構文については、glob のドキュメントをご覧ください。

有効

Webhook は、選択されたときにトリガー イベントでリクエストを送信します。選択されていない場合、リクエストは送信されません。

Webhook をテストする

Webhook を構成したら、Webhook タブの [Test Delivery] ボタンを使用して Webhook をテストできます。

イベント情報の例

次の例は、Secure Source Manager がさまざまな Webhook イベントのターゲット URL に送信するイベント情報を示しています。

プッシュ イベント ペイロード

プッシュ イベント ペイロードの内容は次のようになります。

       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:     

本文

     {       "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": "[email protected]",             "username": "[email protected]"           },           "committer": {             "name": "user",             "email": "[email protected]",             "username": "[email protected]"           },           "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 protected]","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": "[email protected]: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":"[email protected]","full_name":"user","email":"[email protected]","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":"[email protected]"},       "sender": {"id":4,"login":"[email protected]","full_name":"user","email":"[email protected]","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":"[email protected]"}     }    

プル イベント ペイロード

pull イベントのペイロードの内容は次のようになります。

ヘッダー

       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:     

本文

       {       "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":"[email protected]","full_name":"user","email":"[email protected]","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":"[email protected]"},         "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 protected]","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": "[email protected]: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 protected]","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": "[email protected]: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 protected]","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": "[email protected]: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":"[email protected]","full_name":"user","email":"[email protected]","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":"[email protected]"},       "review": null     }     

次のステップ