我正在写作,因为我不清楚如何配置jenkins从gerrit中获取构建项目的更改。
网上有很多关于如何连接所有这些代码的教程/示例。 但我没有发现任何解释我想做的事情。 我认为这是可能的但是......好吧。我不确定。
我的设置: 我有一个repo清单,其中包含最终应用程序的许多不同模块。应用程序是以这种方式编写的,因为我可以更改模块并将其替换为具有执行不同作业的类似代码的模块。例如,它们可以为不同的客户提供个性化服务。
我在jenkins中设置了一个工作,捕获每个子模块中的每个提交。
我将Jenkins连接到Gerrit,我可以使用gerrit触发器启动构建。
它可以工作,我可以建立我的主人和当前的主人。
我的问题是,当我发送补丁进行审核时,jenkins构建了主服务器,而不是我发送的补丁。我想在将它集成到master之前测试最后一个补丁。
模块不能独立构建,因为它们都以某种方式连接,因此我无法单独检查每个部分。
有人能够完成这样的事情吗?
答案 0 :(得分:1)
当Gerrit Trigger启动Jenkins作业时,您可以在执行构建之前执行以下操作来准备工作区:
使用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
...可以满足您的需求。