多个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}之外的任何参数$ (在这种情况下,projectsbranches)将可以访问 行动。

运行zoidberg

$> zoidbergd -c /path/to/zoidberg.yaml

要在调试模式下运行并查看一大堆输出:

$> zoidbergd -c /path/to/zoidberg.yaml -v

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将Scanner对象作为构造函数参数传递给UserInterface类   spring未能启动bean“subtocolWebSocketHandler”;嵌套的例外是java。lang.IllegalArgumentException:没有处理程序   Java EE应用程序中后台服务的多线程Java线程(设置守护进程和优先级)?   java Pull to refresh返回列表的第一个位置   无法将comparator类转换为java。可比的   java将json从servlet传递到dojo   JavaHibernate:将子类实例转换为超类实例   java警告调用servlet类时非法反射访问   java静态变量值   java@Entity和@embeddeble之间有什么区别   java将作业配置导入公共作业配置类(注释配置)   sql公共表表达式(以values语句开头)在java中给出错误   java在ImageJ中使用ImageProcessor   java PostgreSQL executeBatch()会随着时间的推移而变慢   java在安卓中以表格形式排列sqllite表数据?   java中SVG的swing定制呈现   java删除与另一个实体映射的实体   java何时/如何添加ListView适配器,使用back按钮恢复它?(片段)   java为什么IBinder和Binder之间的类型转换不是非法的?   java在方法参数列表中使用ArrayList或List