System hooks

原文:https://docs.gitlab.com/ee/system_hooks/system_hooks.html

System hooks

您的 GitLab 实例可以对以下事件执行 HTTP POST 请求:

  • project_create
  • project_destroy
  • project_rename
  • project_transfer
  • project_update
  • user_add_to_team
  • user_remove_from_team
  • user_update_for_team
  • user_create
  • user_destroy
  • user_failed_login
  • user_rename
  • key_create
  • key_destroy
  • group_create
  • group_destroy
  • group_rename
  • user_add_to_group
  • user_remove_from_group
  • user_update_for_group

这些触发器中的大多数触发器是不言自明的,但是应该澄清一下project_updateproject_renameproject_update项目的属性(名称,描述,标签等)发生更改,就会随时触发project_update除非 path属性也发生更改. 在这种情况下,将触发project_rename (例如,如果您只关心存储库 URL,则可以只监听project_rename ).

每当被阻止的用户尝试登录并拒绝访问时,都会发送user_failed_login .

可以使用系统挂钩,例如,用于在 LDAP 服务器中记录或更改信息.

注意:对于 Push 和 Tag 事件,我们采用与Webhooks相同的结构和弃用方式,但是我们从不显示提交.

Hooks request example

请求标头:

X-Gitlab-Event: System Hook 

创建的项目:

{  "created_at":  "2012-07-21T07:30:54Z",  "updated_at":  "2012-07-21T07:38:22Z",  "event_name":  "project_create",  "name":  "StoreCloud",  "owner_email":  "johnsmith@gmail.com",  "owner_name":  "John Smith",  "path":  "storecloud",  "path_with_namespace":  "jsmith/storecloud",  "project_id":  74,  "project_visibility":  "private"  } 

项目已销毁:

{  "created_at":  "2012-07-21T07:30:58Z",  "updated_at":  "2012-07-21T07:38:22Z",  "event_name":  "project_destroy",  "name":  "Underscore",  "owner_email":  "johnsmith@gmail.com",  "owner_name":  "John Smith",  "path":  "underscore",  "path_with_namespace":  "jsmith/underscore",  "project_id":  73,  "project_visibility":  "internal"  } 

项目更名:

{  "created_at":  "2012-07-21T07:30:58Z",  "updated_at":  "2012-07-21T07:38:22Z",  "event_name":  "project_rename",  "name":  "Underscore",  "path":  "underscore",  "path_with_namespace":  "jsmith/underscore",  "project_id":  73,  "owner_name":  "John Smith",  "owner_email":  "johnsmith@gmail.com",  "project_visibility":  "internal",  "old_path_with_namespace":  "jsmith/overscore"  } 

请注意,如果命名空间发生更改,则不会触发project_rename . 在这种情况下,请参考group_renameuser_rename .

项目转移:

{  "created_at":  "2012-07-21T07:30:58Z",  "updated_at":  "2012-07-21T07:38:22Z",  "event_name":  "project_transfer",  "name":  "Underscore",  "path":  "underscore",  "path_with_namespace":  "scores/underscore",  "project_id":  73,  "owner_name":  "John Smith",  "owner_email":  "johnsmith@gmail.com",  "project_visibility":  "internal",  "old_path_with_namespace":  "jsmith/overscore"  } 

项目已更新:

{  "created_at":  "2012-07-21T07:30:54Z",  "updated_at":  "2012-07-21T07:38:22Z",  "event_name":  "project_update",  "name":  "StoreCloud",  "owner_email":  "johnsmith@gmail.com",  "owner_name":  "John Smith",  "path":  "storecloud",  "path_with_namespace":  "jsmith/storecloud",  "project_id":  74,  "project_visibility":  "private"  } 

新团队成员:

{  "created_at":  "2012-07-21T07:30:56Z",  "updated_at":  "2012-07-21T07:38:22Z",  "event_name":  "user_add_to_team",  "access_level":  "Maintainer",  "project_id":  74,  "project_name":  "StoreCloud",  "project_path":  "storecloud",  "project_path_with_namespace":  "jsmith/storecloud",  "user_email":  "johnsmith@gmail.com",  "user_name":  "John Smith",  "user_username":  "johnsmith",  "user_id":  41,  "project_visibility":  "visibilitylevel|private"  } 

团队成员已删除:

{  "created_at":  "2012-07-21T07:30:56Z",  "updated_at":  "2012-07-21T07:38:22Z",  "event_name":  "user_remove_from_team",  "access_level":  "Maintainer",  "project_id":  74,  "project_name":  "StoreCloud",  "project_path":  "storecloud",  "project_path_with_namespace":  "jsmith/storecloud",  "user_email":  "johnsmith@gmail.com",  "user_name":  "John Smith",  "user_username":  "johnsmith",  "user_id":  41,  "project_visibility":  "visibilitylevel|private"  } 

团队成员已更新:

{  "created_at":  "2012-07-21T07:30:56Z",  "updated_at":  "2012-07-21T07:38:22Z",  "event_name":  "user_update_for_team",  "access_level":  "Maintainer",  "project_id":  74,  "project_name":  "StoreCloud",  "project_path":  "storecloud",  "project_path_with_namespace":  "jsmith/storecloud",  "user_email":  "johnsmith@gmail.com",  "user_name":  "John Smith",  "user_username":  "johnsmith",  "user_id":  41,  "project_visibility":  "visibilitylevel|private"  } 

用户创建:

{  "created_at":  "2012-07-21T07:44:07Z",  "updated_at":  "2012-07-21T07:38:22Z",  "email":  "js@gitlabhq.com",  "event_name":  "user_create",  "name":  "John Smith",  "username":  "js",  "user_id":  41  } 

用户已删除:

{  "created_at":  "2012-07-21T07:44:07Z",  "updated_at":  "2012-07-21T07:38:22Z",  "email":  "js@gitlabhq.com",  "event_name":  "user_destroy",  "name":  "John Smith",  "username":  "js",  "user_id":  41  } 

用户登录失败:

{  "event_name":  "user_failed_login",  "created_at":  "2017-10-03T06:08:48Z",  "updated_at":  "2018-01-15T04:52:06Z",  "name":  "John Smith",  "email":  "user4@example.com",  "user_id":  26,  "username":  "user4",  "state":  "blocked"  } 

如果通过 LDAP 阻止了用户,则state将为ldap_blocked .

用户重命名:

{  "event_name":  "user_rename",  "created_at":  "2017-11-01T11:21:04Z",  "updated_at":  "2017-11-01T14:04:47Z",  "name":  "new-name",  "email":  "best-email@example.tld",  "user_id":  58,  "username":  "new-exciting-name",  "old_username":  "old-boring-name"  } 

密钥已添加

{  "event_name":  "key_create",  "created_at":  "2014-08-18 18:45:16 UTC",  "updated_at":  "2012-07-21T07:38:22Z",  "username":  "root",  "key":  "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC58FwqHUbebw2SdT7SP4FxZ0w+lAO/erhy2ylhlcW/tZ3GY3mBu9VeeiSGoGz8hCx80Zrz+aQv28xfFfKlC8XQFpCWwsnWnQqO2Lv9bS8V1fIHgMxOHIt5Vs+9CAWGCCvUOAurjsUDoE2ALIXLDMKnJxcxD13XjWdK54j6ZXDB4syLF0C2PnAQSVY9X7MfCYwtuFmhQhKaBussAXpaVMRHltie3UYSBUUuZaB3J4cg/7TxlmxcNd+ppPRIpSZAB0NI6aOnqoBCpimscO/VpQRJMVLr3XiSYeT6HBiDXWHnIVPfQc03OGcaFqOit6p8lYKMaP/iUQLm+pgpZqrXZ9vB john@localhost",  "id":  4  } 

密钥已删除

{  "event_name":  "key_destroy",  "created_at":  "2014-08-18 18:45:16 UTC",  "updated_at":  "2012-07-21T07:38:22Z",  "username":  "root",  "key":  "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC58FwqHUbebw2SdT7SP4FxZ0w+lAO/erhy2ylhlcW/tZ3GY3mBu9VeeiSGoGz8hCx80Zrz+aQv28xfFfKlC8XQFpCWwsnWnQqO2Lv9bS8V1fIHgMxOHIt5Vs+9CAWGCCvUOAurjsUDoE2ALIXLDMKnJxcxD13XjWdK54j6ZXDB4syLF0C2PnAQSVY9X7MfCYwtuFmhQhKaBussAXpaVMRHltie3UYSBUUuZaB3J4cg/7TxlmxcNd+ppPRIpSZAB0NI6aOnqoBCpimscO/VpQRJMVLr3XiSYeT6HBiDXWHnIVPfQc03OGcaFqOit6p8lYKMaP/iUQLm+pgpZqrXZ9vB john@localhost",  "id":  4  } 

组创建:

{  "created_at":  "2012-07-21T07:30:54Z",  "updated_at":  "2012-07-21T07:38:22Z",  "event_name":  "group_create",  "name":  "StoreCloud",  "owner_email":  null,  "owner_name":  null,  "path":  "storecloud",  "group_id":  78  } 

owner_nameowner_email始终为null . 请参阅https://gitlab.com/gitlab-org/gitlab/-/issues/20011 .

组已删除:

{  "created_at":  "2012-07-21T07:30:54Z",  "updated_at":  "2012-07-21T07:38:22Z",  "event_name":  "group_destroy",  "name":  "StoreCloud",  "owner_email":  null,  "owner_name":  null,  "path":  "storecloud",  "group_id":  78  } 

owner_nameowner_email始终为null . 请参阅问题#20011 .

组重命名:

{  "event_name":  "group_rename",  "created_at":  "2017-10-30T15:09:00Z",  "updated_at":  "2017-11-01T10:23:52Z",  "name":  "Better Name",  "path":  "better-name",  "full_path":  "parent-group/better-name",  "group_id":  64,  "owner_name":  null,  "owner_email":  null,  "old_path":  "old-name",  "old_full_path":  "parent-group/old-name"  } 

owner_nameowner_email始终为null . 请参阅https://gitlab.com/gitlab-org/gitlab/-/issues/20011 .

新组成员:

{  "created_at":  "2012-07-21T07:30:56Z",  "updated_at":  "2012-07-21T07:38:22Z",  "event_name":  "user_add_to_group",  "group_access":  "Maintainer",  "group_id":  78,  "group_name":  "StoreCloud",  "group_path":  "storecloud",  "user_email":  "johnsmith@gmail.com",  "user_name":  "John Smith",  "user_username":  "johnsmith",  "user_id":  41  } 

组成员已删除:

{  "created_at":  "2012-07-21T07:30:56Z",  "updated_at":  "2012-07-21T07:38:22Z",  "event_name":  "user_remove_from_group",  "group_access":  "Maintainer",  "group_id":  78,  "group_name":  "StoreCloud",  "group_path":  "storecloud",  "user_email":  "johnsmith@gmail.com",  "user_name":  "John Smith",  "user_username":  "johnsmith",  "user_id":  41  } 

小组成员已更新:

{  "created_at":  "2012-07-21T07:30:56Z",  "updated_at":  "2012-07-21T07:38:22Z",  "event_name":  "user_update_for_group",  "group_access":  "Maintainer",  "group_id":  78,  "group_name":  "StoreCloud",  "group_path":  "storecloud",  "user_email":  "johnsmith@gmail.com",  "user_name":  "John Smith",  "user_username":  "johnsmith",  "user_id":  41  } 

Push events

当您推送到存储库时(在推送标签时除外)触发. 它为每个修改的分支生成一个事件.

请求标头:

X-Gitlab-Event: System Hook 

要求正文:

{  "event_name":  "push",  "before":  "95790bf891e76fee5e1747ab589903a6a1f80f22",  "after":  "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",  "ref":  "refs/heads/master",  "checkout_sha":  "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",  "user_id":  4,  "user_name":  "John Smith",  "user_email":  "john@example.com",  "user_avatar":  "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=8://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80",  "project_id":  15,  "project":{  "name":"Diaspora",  "description":"",  "web_url":"http://example.com/mike/diaspora",  "avatar_url":null,  "git_ssh_url":"git@example.com:mike/diaspora.git",  "git_http_url":"http://example.com/mike/diaspora.git",  "namespace":"Mike",  "visibility_level":0,  "path_with_namespace":"mike/diaspora",  "default_branch":"master",  "homepage":"http://example.com/mike/diaspora",  "url":"git@example.com:mike/diaspora.git",  "ssh_url":"git@example.com:mike/diaspora.git",  "http_url":"http://example.com/mike/diaspora.git"  },  "repository":{  "name":  "Diaspora",  "url":  "git@example.com:mike/diaspora.git",  "description":  "",  "homepage":  "http://example.com/mike/diaspora",  "git_http_url":"http://example.com/mike/diaspora.git",  "git_ssh_url":"git@example.com:mike/diaspora.git",  "visibility_level":0  },  "commits":  [  {  "id":  "c5feabde2d8cd023215af4d2ceeb7a64839fc428",  "message":  "Add simple search to projects in public area",  "timestamp":  "2013-05-13T18:18:08+00:00",  "url":  "https://dev.gitlab.org/gitlab/gitlabhq/commit/c5feabde2d8cd023215af4d2ceeb7a64839fc428",  "author":  {  "name":  "Example User",  "email":  "user@example.com"  }  }  ],  "total_commits_count":  1  } 

Tag events

在创建(或删除)存储库标签时触发. 每个修改后的标签会生成一个事件.

请求标头:

X-Gitlab-Event: System Hook 

要求正文:

{  "event_name":  "tag_push",  "before":  "0000000000000000000000000000000000000000",  "after":  "82b3d5ae55f7080f1e6022629cdb57bfae7cccc7",  "ref":  "refs/tags/v1.0.0",  "checkout_sha":  "5937ac0a7beb003549fc5fd26fc247adbce4a52e",  "user_id":  1,  "user_name":  "John Smith",  "user_avatar":  "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=8://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80",  "project_id":  1,  "project":{  "name":"Example",  "description":"",  "web_url":"http://example.com/jsmith/example",  "avatar_url":null,  "git_ssh_url":"git@example.com:jsmith/example.git",  "git_http_url":"http://example.com/jsmith/example.git",  "namespace":"Jsmith",  "visibility_level":0,  "path_with_namespace":"jsmith/example",  "default_branch":"master",  "homepage":"http://example.com/jsmith/example",  "url":"git@example.com:jsmith/example.git",  "ssh_url":"git@example.com:jsmith/example.git",  "http_url":"http://example.com/jsmith/example.git"  },  "repository":{  "name":  "Example",  "url":  "ssh://git@example.com/jsmith/example.git",  "description":  "",  "homepage":  "http://example.com/jsmith/example",  "git_http_url":"http://example.com/jsmith/example.git",  "git_ssh_url":"git@example.com:jsmith/example.git",  "visibility_level":0  },  "commits":  [],  "total_commits_count":  0  } 

Merge request events

在创建新的合并请求,更新/合并/关闭现有合并请求或在源分支中添加提交时触发.

请求标头:

X-Gitlab-Event: System Hook 
{  "object_kind":  "merge_request",  "user":  {  "name":  "Administrator",  "username":  "root",  "avatar_url":  "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon"  },  "project":  {  "name":  "Example",  "description":  "",  "web_url":  "http://example.com/jsmith/example",  "avatar_url":  null,  "git_ssh_url":  "git@example.com:jsmith/example.git",  "git_http_url":  "http://example.com/jsmith/example.git",  "namespace":  "Jsmith",  "visibility_level":  0,  "path_with_namespace":  "jsmith/example",  "default_branch":  "master",  "ci_config_path":  "",  "homepage":  "http://example.com/jsmith/example",  "url":  "git@example.com:jsmith/example.git",  "ssh_url":  "git@example.com:jsmith/example.git",  "http_url":  "http://example.com/jsmith/example.git"  },  "object_attributes":  {  "id":  90,  "target_branch":  "master",  "source_branch":  "ms-viewport",  "source_project_id":  14,  "author_id":  51,  "assignee_id":  6,  "title":  "MS-Viewport",  "created_at":  "2017-09-20T08:31:45.944Z",  "updated_at":  "2017-09-28T12:23:42.365Z",  "milestone_id":  null,  "state":  "opened",  "merge_status":  "unchecked",  "target_project_id":  14,  "iid":  1,  "description":  "",  "updated_by_id":  1,  "merge_error":  null,  "merge_params":  {  "force_remove_source_branch":  "0"  },  "merge_when_pipeline_succeeds":  false,  "merge_user_id":  null,  "merge_commit_sha":  null,  "deleted_at":  null,  "in_progress_merge_commit_sha":  null,  "lock_version":  5,  "time_estimate":  0,  "last_edited_at":  "2017-09-27T12:43:37.558Z",  "last_edited_by_id":  1,  "head_pipeline_id":  61,  "ref_fetched":  true,  "merge_jid":  null,  "source":  {  "name":  "Awesome Project",  "description":  "",  "web_url":  "http://example.com/awesome_space/awesome_project",  "avatar_url":  null,  "git_ssh_url":  "git@example.com:awesome_space/awesome_project.git",  "git_http_url":  "http://example.com/awesome_space/awesome_project.git",  "namespace":  "root",  "visibility_level":  0,  "path_with_namespace":  "awesome_space/awesome_project",  "default_branch":  "master",  "ci_config_path":  "",  "homepage":  "http://example.com/awesome_space/awesome_project",  "url":  "http://example.com/awesome_space/awesome_project.git",  "ssh_url":  "git@example.com:awesome_space/awesome_project.git",  "http_url":  "http://example.com/awesome_space/awesome_project.git"  },  "target":  {  "name":  "Awesome Project",  "description":  "Aut reprehenderit ut est.",  "web_url":  "http://example.com/awesome_space/awesome_project",  "avatar_url":  null,  "git_ssh_url":  "git@example.com:awesome_space/awesome_project.git",  "git_http_url":  "http://example.com/awesome_space/awesome_project.git",  "namespace":  "Awesome Space",  "visibility_level":  0,  "path_with_namespace":  "awesome_space/awesome_project",  "default_branch":  "master",  "ci_config_path":  "",  "homepage":  "http://example.com/awesome_space/awesome_project",  "url":  "http://example.com/awesome_space/awesome_project.git",  "ssh_url":  "git@example.com:awesome_space/awesome_project.git",  "http_url":  "http://example.com/awesome_space/awesome_project.git"  },  "last_commit":  {  "id":  "ba3e0d8ff79c80d5b0bbb4f3e2e343e0aaa662b7",  "message":  "fixed readme",  "timestamp":  "2017-09-26T16:12:57Z",  "url":  "http://example.com/awesome_space/awesome_project/commits/da1560886d4f094c3e6c9ef40349f7d38b5d27d7",  "author":  {  "name":  "GitLab dev user",  "email":  "gitlabdev@dv6700.(none)"  }  },  "work_in_progress":  false,  "total_time_spent":  0,  "human_total_time_spent":  null,  "human_time_estimate":  null  },  "labels":  null,  "repository":  {  "name":  "git-gpg-test",  "url":  "git@example.com:awesome_space/awesome_project.git",  "description":  "",  "homepage":  "http://example.com/awesome_space/awesome_project"  }  } 

Repository Update events

当您推送到存储库(包括标签)时仅触发一次.

Request header:

X-Gitlab-Event: System Hook 

要求正文:

{  "event_name":  "repository_update",  "user_id":  1,  "user_name":  "John Smith",  "user_email":  "admin@example.com",  "user_avatar":  "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=8://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80",  "project_id":  1,  "project":  {  "name":"Example",  "description":"",  "web_url":"http://example.com/jsmith/example",  "avatar_url":null,  "git_ssh_url":"git@example.com:jsmith/example.git",  "git_http_url":"http://example.com/jsmith/example.git",  "namespace":"Jsmith",  "visibility_level":0,  "path_with_namespace":"jsmith/example",  "default_branch":"master",  "homepage":"http://example.com/jsmith/example",  "url":"git@example.com:jsmith/example.git",  "ssh_url":"git@example.com:jsmith/example.git",  "http_url":"http://example.com/jsmith/example.git",  },  "changes":  [  {  "before":"8205ea8d81ce0c6b90fbe8280d118cc9fdad6130",  "after":"4045ea7a3df38697b3730a20fb73c8bed8a3e69e",  "ref":"refs/heads/master"  }  ],  "refs":["refs/heads/master"]  } 

Local requests in system hooks

管理员可以允许或阻止通过系统挂钩对本地网络的请求 .

Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2021-03-27 13:48:25
鼓励一下

results matching ""

    No results matching ""