为组中的所有项目添加GitLab Web钩子

为组中的所有项目添加GitLab Web钩子,gitlab,webhooks,Gitlab,Webhooks,我希望GitLab组中的所有项目都具有webhook的共享配置: <MY_JENKINS_INSTANCE>/git/notifyCommit?url=$CHANGED_REPOSITORY /git/notifyCommit?url=$CHANGED\u存储库 建议有可能: 如果一个组中有一大组项目,那么为整个组全局配置web钩子将非常方便。您可以在“组设置”页面上添加组级web挂钩 这听起来和我想要的完全一样,尽管我在gitlab 7.0.0的“组设置”页面上没有看到这样的东

我希望GitLab组中的所有项目都具有webhook的共享配置:

<MY_JENKINS_INSTANCE>/git/notifyCommit?url=$CHANGED_REPOSITORY
/git/notifyCommit?url=$CHANGED\u存储库
建议有可能:

如果一个组中有一大组项目,那么为整个组全局配置web钩子将非常方便。您可以在“组设置”页面上添加组级web挂钩

这听起来和我想要的完全一样,尽管我在gitlab 7.0.0的“组设置”页面上没有看到这样的东西。我无法确定此功能是否比中的更新


该功能是否存在?如何使用它?

仅在企业版中可以:

在GitLab Enterprise Edition中,您可以为整个组全局配置web挂钩。您可以在“组设置”页面“设置”>“web挂钩”上添加组级web挂钩

下面是使用GitLab CE API执行此操作的过程:

在GitLab中拥有或创建一个用户和一个具有
api
作用域的个人访问令牌:

  • 用户(右上角化身)>设置(菜单)>访问令牌(侧栏)
  • 选中
    api
    范围(复选框)
  • 单击创建个人访问令牌(按钮)
  • 是新个人访问令牌(文本字段)中的值
执行HTTP请求以获取所有项目:

GET https://gitlab.example.com/api/v4/projects
Private-Token: <my_personal_token>
Accept: application/json

这应该用您选择的语言编写脚本。

不适合作为持久性解决方案,但这可能对寻求一次性更改的人有用(从:


尽管这是正确的,.@VertigoRay该页面似乎只描述了项目挂钩,挂钩相关的端点需要
:id
(“项目的id或URL编码路径”)。我尝试了一个组id,但它似乎不起作用(至少在GitLab社区版8.14.4中是这样)。@seanf你是对的。我的建议是,尽管不是很清楚,但您可以查询组中的每个项目,并使用单独的Jenkins作业(甚至GitLab CI)和少量脚本为每个项目设置Webhook。
POST https://gitlab.example.com/api/v4/projects/<project_ID>/hooks
Private-Token: <my_personal_token>
Content-Type: application/json

{
  "url": "https://jenkins.example.com/git/notifyCommit?url=<encoded_ssh_url>",
  "enable_ssl_verification": true
}
Add a webhook for projects in a given NAMESPACE
# omnibus-gitlab
sudo gitlab-rake gitlab:web_hook:add URL="http://example.com/hook" NAMESPACE=acme
# source installations
bundle exec rake gitlab:web_hook:add URL="http://example.com/hook" NAMESPACE=acme RAILS_ENV=production