Gerrit 支持哪些 hooks 呢?调用和传参的方式又是如何呢 ?
我们可以去参考这篇官方文档: Gerrit Supported Hooks
我们可以在 Gerrit 的安装目录下的 hooks 目录,创建如下标题的文件,当相应的事件发生时,会自动调用这些脚本,并传入相应的参数。但官方文档中描述传入的参数不够准确,可以自行测试。
Gerrit Supported Hooks
传入参数测试脚本
这里采用发送飞书消息的形式,需要创建飞书自定义机器人,输出传入的参数。
#!/usr/bin/python3
#coding:utf-8
import sys
import requests
import json
# change-merged --change <change id> --change-url <change url> --change-owner <change owner> --change-owner-username <username> --project <project name> --branch <branch> --topic <topic> --submitter <submitter> --submitter-username <username> --commit <sha1> --newrev <sha1>
change-merged_argv = sys.argv[1:]
string = ""
for x in change-merged_argv:
string += str(x)
string += ","
print(string)
url = 'https://open.feishu.cn/open-apis/bot/v2/hook/1447d4ee-4b4c-4de6-b006-d74aaa769162'
method = 'post'
headers = {
'Content-Type': 'application/json'
}
json = {
"msg_type": "interactive",
"card": {
"config": {
"wide_screen_mode": True
},
"elements": [{
"tag": "div",
"text": {
"content": string,
"tag": "lark_md"
}
}],
"header": {
"title": {
"content": "Gerrit change-merged",
"tag": "plain_text"
}
}
}
}
requests.request(method=method, url=url, headers=headers, json=json)
自行测试结果
Synchronous Hooks
ref-update
commit-received
submit
Asynchronous Hooks
patchset-created
每当有新的代码提交时调用(这包括新的更改)。
patchset-created
–change Ia21d96fc3491f79b9beeb9e0dd0aeb9fad9f3fed
–is-draft false
–kind REWORK
–change-url http://gerrit.com/gerrit/5431
–change-owner Anonymous Coward (xxxx@qq.com)
–project rk3568_android11
–branch master
–uploader Anonymous Coward (xxxx@qq.com)
–commit c70a40eeef997ae6dc16abb72bccadc991de6d0e
–patchset 1
comment-added
change-merged
每当合并代码时调用。
change-abandoned
change-deleted
change-restored
ref-updated
project-created
reviewer-added
每当增加 reviewer 时调用,传入的参数如下:
reviewer-added
–change Ia7d3c63f7e7d073bfd70a625151a4b86859997b5
–change-url http://gerrit.com/gerrit/5437
–change-owner Anonymous Coward (xxxx@qq.com)
–project firmware
–branch master
–reviewer Anonymous Coward (xxxx@qq.com)