背景:
在做Android固件开发的时候,通常我们可以利用gerrit-trigger插件,开发者提交一笔的时候自动触发jenkins编译,如果提交的这一笔的编译依赖其他gerrit才能编译过,我们可以在commit message中加入特殊字段,让jenkins在编译此笔patch的时候同时抓取依赖的gerrit代码下来一起编译(本文不讨论,会专门写一篇文章讨论这种需求)。还有一种场景,开发人员修改了多个仓库比如kernel, uboot等仓库,虽然编译上没有依赖,但仍然期望jenkins可以支持将这多笔提交一起编译一个版本(本文要讨论的方案)。
方案:
1.配置参数
用jenkins创建一个freesytle job,并且将This project is parameterized选中,如下图,让开发人员可以手动输入多个gerrit link,多个之间用逗号隔开。
2.配置编译步骤中的命令
在Build Steps Exexute Shell中解决参数,并获取cherry-pick的url和project在codebase的相对路径,然后执行cherry-pick,最后执行编译