Gerrit作为审核工具,而不是记录的存储库

时间:2015-06-16 17:17:41

标签: git bitbucket gerrit

我从快速入门指南中提取了一个gerrit实例。

我的公司使用BitBucket进行拉取请求,偶尔也会用于代码审查。我们使用Jenkins和BitBucket绑定的扩展构建/部署管道。

我们希望将gerrit集成到代码审查中,因为它能够在审核被接受之前进行提交并构建/验证它们。

基本上,我想要gerrit"提交"按钮将上游推送到BitBucket。 (我不想通过复制来尝试这样做;我想将BitBucket维护为记录的上游/存储库,因为公司的惯性。)

有没有人对如何做到这一点有任何建议?能力是否存在,或者这是一个新颖的想法?

1 个答案:

答案 0 :(得分:16)

Gerrit通过在Gerrit本身托管的实际Git存储库周围提供(或多或少)瘦包装来实现它的代码审查功能。据我所知,不可能直接在Gerrit中集成外部Git存储库。

这意味着在使用Gerrit时,Git存储库需要在Gerrit本身中托管。因此,您需要在Gerrit实例中维护BitBucket存储库的完整副本。所以这个问题基本归结为保持两个Git存储库同步

将新提交从BitBucket同步到Gerrit

由于您已经在使用Jenkins,我建议使用Jenkins构建来在每次将新提交推送到BitBucket存储库时更新您的Gerrit存储库。为此,您需要:

  1. 具有直接推送功能的Gerrit用户。为此,您需要在Gerrit项目中的refs/heads/* ref上授予推送权限。 Jenkins将使用此用户。请注意不要将此权限授予任何最终用户,否则他们将能够通过直接推送来绕过代码审查。
  2. Jenkins作业配置为每当将新提交推送到BitBucket存储库时构建。在该工作中,只需将所有分支推送到Gerrit实例。
  3. 配置BitBucket服务挂钩以触发您的Jenkins构建(为此,您的Jenkins实例将需要公开访问;否则只需将Jenkins作业的计划设置为一个短的间隔,以最小化同步延迟。)
  4. 将新的提交从Gerrit同步到BitBucket

    在Gerrit中提交代码评论时,需要将新提交推回到BitBucket。通常,我建议使用复制插件。以下是相应配置文件的外观(进入Gerrit目录中的etc/replication.config):

    [remote "bitbucket"]
        url = ssh://git@bitbucket.org/<your-user>/${name}.git
        push = +refs/tags/*:refs/tags/*
        push = +refs/heads/*:refs/heads/*
        mirror = true
        replicateOnStartup = true
        replicatePermissions = false
    

    由于您提到要避免使用复制,因此您还可以使用Jenkins作业将Gerrit的提交同步回BitBucket。为了最大限度地减少延迟,您可以使用Gerrit Trigger plugin for Jenkins(无论如何都要使用它进行预提交检查)。或者,您可以使用放在hooks/ref-updated中的自定义Gerrit钩子来触发Jenkins构建(如果您希望我详细说明,请删除注释)。

    希望这有帮助!

相关问题