繁体   English   中英

Jenkins 和 Gerrit 与 google repo scm 的集成

[英]Jenkins and Gerrit integration with google repo scm

我写这篇文章是因为我不清楚如何配置 jenkins 以从 gerrit 获取构建我的项目的更改。

网上有很多关于如何连接所有这些代码的教程/示例。 但我没有找到任何可以解释我想做的事情。 我认为这是可能的,但是……好吧。 我不知道。

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

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

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

它有效,我可以构建我的主人和当前的主人。

我的问题是,当我发送补丁进行审查时,詹金斯构建了主版本,而不是我发送的补丁。 我想在将它集成到 master 之前测试最后一个补丁。

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

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

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

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

    cd $GERRIT_PROJECT

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

    或者

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

关键是相应地设置“Repositories”>“Advanced..”>“Refspec”和“Branches to build”>“Branch Specifier”字段:作业>配置>源代码管理> Git

如果要构建“master”分支,请设置:

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

Branch Specifier = refs/heads/master

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

Refspec = $GERRIT_REFSPEC:$GERRIT_REFSPEC

Branch Specifieer = $GERRIT_REFSPEC

点击“?” 以查看更多详细信息。

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

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

...做你正在寻找的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM