Jenkins和Gerrit与google repo scm整合

时间:2016-12-27 16:06:42

标签: git jenkins gerrit repo

我正在写作,因为我不清楚如何配置jenkins从gerrit中获取构建项目的更改。

网上有很多关于如何连接所有这些代码的教程/示例。 但我没有发现任何解释我想做的事情。 我认为这是可能的但是......好吧。我不确定。

我的设置: 我有一个repo清单,其中包含最终应用程序的许多不同模块。应用程序是以这种方式编写的,因为我可以更改模块并将其替换为具有执行不同作业的类似代码的模块。例如,它们可以为不同的客户提供个性化服务。

我在jenkins中设置了一个工作,捕获每个子模块中的每个提交。

我将Jenkins连接到Gerrit,我可以使用gerrit触发器启动构建。

它可以工作,我可以建立我的主人和当前的主人。

我的问题是,当我发送补丁进行审核时,jenkins构建了主服务器,而不是我发送的补丁。我想在将它集成到master之前测试最后一个补丁。

模块不能独立构建,因为它们都以某种方式连接,因此我无法单独检查每个部分。

有人能够完成这样的事情吗?

3 个答案:

答案 0 :(得分:1)

当Gerrit Trigger启动Jenkins作业时,您可以在执行构建之前执行以下操作来准备工作区:

  1. 使用“repo sync”签出所有存储库
  2. 使用GERRIT_PROJECT和GERRIT_REFSPEC Gerrit Trigger env变量并执行以下命令来检查更改的存储库的补丁集:

    cd $ GERRIT_PROJECT

    git fetch https:// USER @ SERVER / a / $ GERRIT_PROJECT $ GERRIT_REFSPEC&& git checkout FETCH_HEAD

    OR

    git fetch ssh:// USER @ SERVER :29418 / $ GERRIT_PROJECT $ GERRIT_REFSPEC&& git checkout FETCH_HEAD

答案 1 :(得分:0)

关键是要相应地设置"存储库" > "高级.." > "的Refspec"和#34;分支建立" > "分支说明符"字段:工作>配置>源代码管理> GIT中

如果你想建立"主人"分支然后设置:

Refspec = +refs/heads/master:refs/remotes/origin/master

Branch Specifier = refs/heads/master

如果要构建补丁集,请设置:

Refspec = $GERRIT_REFSPEC:$GERRIT_REFSPEC

Branch Specifieer = $GERRIT_REFSPEC

点击"?"在该领域的右侧,可以查看更多详细信息。

答案 2 :(得分:0)

请参见gerrit-trigger-plugin手册页:

repo init -u git://gerrit.mycompany.net/mymanifest.git
repo sync
repo download $GERRIT_PROJECT $GERRIT_CHANGE_NUMBER/$GERRIT_PATCHSET_NUMBER

...可以满足您的需求。