GitHub、Gerrit、Hudson(Jenkins)工作流

16

我刚开始使用GitHub、Gerrit和Hudson(Jenkins)。我需要关于工作流的一些想法。

我们希望使用GitHub作为我们的主要远程仓库。我们希望主要使用Gerrit进行代码审查,同时也可以在Hudson中触发构建。

但目前,我在思考如何处理这个工作流时遇到了一些困难,希望听听其他人的经验。您有什么想法吗?

2个回答

26

我们正在使用GithubGerritJenkins(Hudson的后继产品)。我们使用Redmine进行问题跟踪。

在使用Gerrit之前,我们将Github作为主要的开发存储库,并且开发者可以提交代码。现在我们使用Gerrit,Github仅用作发布存储库,只有Gerrit用户可以访问并推送更新到Github。

工作流程:

  1. 开发人员从Github检出源代码。
  2. 开发人员进行更改。
  3. 开发人员将更改推送到Gerrit。
  4. Gerrit将更改通知Jenkins以进行集成测试。
    • Jenkins直接从Gerrit git服务器中拉取更改。
    • 通过测试后,Jenkins向Gerrit审查添加+1,并将审核发送给其他开发人员。
    • 未通过测试,Jenkins向Gerrit审查添加-1。
    • 通过/失败状态会推送到Redmine。
  5. 其他开发人员审核更改并进行批准(+2)。
  6. Gerrit将更改提交到Github存储库。
    • Github钩子通知Redmine进行更新。
    • Redmine从Github拉取更改,解析提交信息以获取问题跟踪信息。
  7. 开发人员从Github获取更改...返回步骤2。[编辑]: 我们切换为直接从Gerrit中拉取代码。Github仍然作为拉取生产源的镜像。

缺失部分:

  1. Gerrit审查与问题跟踪关联的功能。

3
这是一个很好的工作流程;你不是恰好有在Confluence(或其他维基)中完整的逐步设置文档吗?那将是非常幸运的,可以加速我们实现类似流程的努力。我知道这很难实现,但还是值得一试! - Patrick

5
我没有直接使用过Gerrit,但我喜欢中间和专门的仓库的想法,它们位于以下两者之间:
  • 开发人员的仓库
  • 中央GitHub远程仓库
因此,您需要确定要在远程GitHub仓库中发布什么内容:
  • 需要审核的代码(意味着本地Gerrit web应用程序将拉取GitHub代码以进行审查)
  • 已经过审查的代码(意味着您首先将提交推送到Gerrit,然后进行代码审查后再将其推送到GitHub)
第二个工作流更接近Google Android Projects使用Gerrit的方式
在两种情况下,都需要一个中间本地仓库供Gerrit进行审查。

链接已经失效。https://source.android.com/source/developing.html是否与之前的链接接近? - pevik
1
@pevik,发现得很好,并由http://osdir.com/ml/repo-discuss/2010-05/msg00243.html确认。我编辑了答案。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接