如何为 gerrit 事件配置 Gerrit Webhooks
How to Configure Gerrit Webhooks for gerrit events
我正在尝试对 gerrit 事件执行一些操作
- 当新回购 added/created.
- 创建新补丁集时。
- 当更改合并到特定分支时。
想法是在任何存储库中发生上述任何情况时在 API 端点上获取事件。
我在 Amazon Linux ec2 实例上安装了 gerrit 3.1.3 运行,在另一台类似的 EC2 机器上安装了节点服务器(具有开放的 API 端点)。在 gerrit 配置中,我添加了以下行:
[plugin "webhooks"]
connectionTimeout = 3000
socketTimeout = 2500
maxTries = 300
retryInterval = 2000
threadPoolSize = 3
[remote "wh_projectCreated"]
url = http://17.233.138.23:8080/gereve
maxTries = 1
sslVerify = false
event = patchset-created
我检查了 webhooks
和 hooks
插件都安装在 gerrit 安装中。
现在,我找不到合适的博客 post 来说明如何配置和获取要在 webhook 上接收的 gerrit 事件。
我还需要做什么,帮大忙了!
找到解决办法,会准确记下:
- 在文件夹中克隆
All-Projects
存储库(使用管理员 url)。 git clone "http://admin@<gerrit-address>-:<gerrit-port>/a/All-Projects"
.
cd All-Projects/
git fetch origin refs/meta/config:refs/remotes/origin/meta/config
git checkout meta/config
- 在目录
All-Projects
的根目录中,创建一个名为 webhooks.config
. 的文件
- 修改以下内容:
[remote "changemerged"]
url = http://<webhook-api>:8081/change-merged
event = change-merged
[remote "project_created"]
url = http://<webhook-api>:8081/create-jenkins-project
event = project-created
参见 gerrit-events。
添加并提交更改:git commit -am "Add webhooks config file"
并签入git push origin meta/config:meta/config
到此结束!
(如果觉得有帮助请点赞)
您可以发送 PUT HTTP 请求来更新 webhooks.config 文件:
curl --location --request PUT '[Gerrit-Site]/a/config/server/webhooks~projects/All-Projects/remotes/[Remote-Name]' \
--header 'Content-Type: application/json; charset=UTF-8' \
--header 'Authorization: Basic aWR...' \
--data-raw '{
"url" : "https://adbf...43.ngrok.io/api/v1/webhook/e527d4d7-49e5-4699-b780-5b5c8420dc0f",
"max_tries" : 3,
"ssl_verify": false,
"connection_timeout": 10000
- 确保更新 gerrit.config 中的 webhooks 插件全局配置。
- 确保在 URL 中为经过身份验证的请求包含“/a/”。
参考文献:
我正在尝试对 gerrit 事件执行一些操作
- 当新回购 added/created.
- 创建新补丁集时。
- 当更改合并到特定分支时。
想法是在任何存储库中发生上述任何情况时在 API 端点上获取事件。
我在 Amazon Linux ec2 实例上安装了 gerrit 3.1.3 运行,在另一台类似的 EC2 机器上安装了节点服务器(具有开放的 API 端点)。在 gerrit 配置中,我添加了以下行:
[plugin "webhooks"]
connectionTimeout = 3000
socketTimeout = 2500
maxTries = 300
retryInterval = 2000
threadPoolSize = 3
[remote "wh_projectCreated"]
url = http://17.233.138.23:8080/gereve
maxTries = 1
sslVerify = false
event = patchset-created
我检查了 webhooks
和 hooks
插件都安装在 gerrit 安装中。
现在,我找不到合适的博客 post 来说明如何配置和获取要在 webhook 上接收的 gerrit 事件。
我还需要做什么,帮大忙了!
找到解决办法,会准确记下:
- 在文件夹中克隆
All-Projects
存储库(使用管理员 url)。git clone "http://admin@<gerrit-address>-:<gerrit-port>/a/All-Projects"
. cd All-Projects/
git fetch origin refs/meta/config:refs/remotes/origin/meta/config
git checkout meta/config
- 在目录
All-Projects
的根目录中,创建一个名为webhooks.config
. 的文件
- 修改以下内容:
[remote "changemerged"]
url = http://<webhook-api>:8081/change-merged
event = change-merged
[remote "project_created"]
url = http://<webhook-api>:8081/create-jenkins-project
event = project-created
参见 gerrit-events。
添加并提交更改:
git commit -am "Add webhooks config file"
并签入
git push origin meta/config:meta/config
到此结束!
(如果觉得有帮助请点赞)
您可以发送 PUT HTTP 请求来更新 webhooks.config 文件:
curl --location --request PUT '[Gerrit-Site]/a/config/server/webhooks~projects/All-Projects/remotes/[Remote-Name]' \
--header 'Content-Type: application/json; charset=UTF-8' \
--header 'Authorization: Basic aWR...' \
--data-raw '{
"url" : "https://adbf...43.ngrok.io/api/v1/webhook/e527d4d7-49e5-4699-b780-5b5c8420dc0f",
"max_tries" : 3,
"ssl_verify": false,
"connection_timeout": 10000
- 确保更新 gerrit.config 中的 webhooks 插件全局配置。
- 确保在 URL 中为经过身份验证的请求包含“/a/”。
参考文献: