我从快速入门指南中提取了一个gerrit实例。
我的公司使用BitBucket进行拉取请求,偶尔也会用于代码审查。我们使用Jenkins和BitBucket绑定的扩展构建/部署管道。
我们希望将gerrit集成到代码审查中,因为它能够在审核被接受之前进行提交并构建/验证它们。
基本上,我想要gerrit"提交"按钮将上游推送到BitBucket。 (我不想通过复制来尝试这样做;我想将BitBucket维护为记录的上游/存储库,因为公司的惯性。)
有没有人对如何做到这一点有任何建议?能力是否存在,或者这是一个新颖的想法?
答案 0 :(得分:16)
Gerrit通过在Gerrit本身托管的实际Git存储库周围提供(或多或少)瘦包装来实现它的代码审查功能。据我所知,不可能直接在Gerrit中集成外部Git存储库。
这意味着在使用Gerrit时,Git存储库需要在Gerrit本身中托管。因此,您需要在Gerrit实例中维护BitBucket存储库的完整副本。所以这个问题基本归结为保持两个Git存储库同步。
由于您已经在使用Jenkins,我建议使用Jenkins构建来在每次将新提交推送到BitBucket存储库时更新您的Gerrit存储库。为此,您需要:
refs/heads/*
ref上授予推送权限。 Jenkins将使用此用户。请注意不要将此权限授予任何最终用户,否则他们将能够通过直接推送来绕过代码审查。在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构建(如果您希望我详细说明,请删除注释)。
希望这有帮助!