多个gerrit实例的事件响应工具
zoidberg的Python项目详细描述
zoidberg是一个通用工具,用于轻松运行基于自定义操作的 关于格瑞特事件。最初是为了同步分支和评论而创建的 在两个主gerrit之间,代码需要共享,但是 通道必须分开。
有了Zoidberg,你可以…
- 在收到评论时通知IRC频道
- 将合并代码同步到第三方Git回购
- …使用任何可以在中实现的内容来响应任何gerrit事件 Python!
设置和配置
首先,安装代码:
$> python setup.py install
现在创建一个配置文件,其中包含gerrit的详细信息 服务器、要响应的事件和要执行的操作 当这些事件发生时执行。
配置文件是yaml格式的,所以继续创建 一个空的zoidberg.yaml,我们将开始介绍一些细节。
配置gerrit实例
你得告诉佐德伯格你的格瑞特家族的细节 处理。zoidberg使用ssh从gerrit流式处理事件, 所以您需要在gerrit实例中注册一个ssh密钥。
下面介绍如何配置gerrit实例以连接到:
- gerrits: - master: host: master-gerrit.yourdomain.com key_filename: /path/to/your/ssh_key username: your_username project-pattern: .*
project-pattern是一个正则表达式,可用于限制 你感兴趣的项目。接收到的项目事件 不匹配此表达式将被忽略。
您可以这样配置多个gerrit实例:
- gerrits: - master: host: master-gerrit.yourdomain.com key_filename: /path/to/your/ssh_key username: your_username project-pattern: .* - third-party: host: gerrit.someone-else.com key_filename: /path/to/your/third_party_ssh_key username: your_username project-pattern: .*
现在,当Zoidberg启动时,它将连接到Gerrits和 开始倾听事件。
配置操作
当你感兴趣的活动来临时,你会想 以行动回应。
示例:当在^{tt2}上的评论上发布注释时$ 格瑞特,我们想把它交叉贴在评论上 第三方gerrit的变更。
配置:
- gerrits: - master: host: master-gerrit.yourdomain.com key_filename: /path/to/your/ssh_key username: your_username project-pattern: .* events: - type: comment-added action: zoidberg.PropagateComment target: third-party - third-party: host: gerrit.someone-else.com key_filename: /path/to/your/third_party_ssh_key username: your_username project-pattern: .*
这将对第三方运行PropagateComment操作 以格瑞特为目标。
zoidberg在zoidberg/actions.py中为您打包了一些有用的操作
[待办事项:创建操作的开发人员指南]
配置启动任务
如果你保持代码从一个主Gerrit到第三方的同步, 你可能会想确保一切都是同步的,当你 启动。
在zoidberg中,actions可以定义一个run方法,该方法用于 响应事件和/或在以下情况下使用的startup方法 Zoidberg开始了。捆绑的SyncBranch操作实现了 下面是如何配置它以使第三方gerry保持同步 与您的主人:
- gerrits: - master: host: master-gerrit.yourdomain.com key_filename: /path/to/your/ssh_key username: your_username project-pattern: ^stuff$ events: - type: ref-updated action: zoidberg.SyncBranch branch-pattern: ^master$ target: third-party startup: - action: zoidberg.SyncBranch target: third-party projects: [stuff] branches: [master] - third-party: host: gerrit.someone-else.com key_filename: /path/to/your/third_party_ssh_key username: your_username project-pattern: .*
这里我们只对master上的stuff项目感兴趣, 当主机启动时,我们希望同步master分支 在stuff项目上转到third-partygerrit。
启动任务配置块传递给操作,因此 所需action和^{tt12}之外的任何参数$ (在这种情况下,projects和branches)将可以访问 行动。
运行zoidberg
$> zoidbergd -c /path/to/zoidberg.yaml
要在调试模式下运行并查看一大堆输出:
$> zoidbergd -c /path/to/zoidberg.yaml -v