我们正在完成新CI系统的设置,包括用于自动化测试和代码审查的git,gerrit和jenkins,我们发现了一个奇怪的情况:
我们有三个不同的gerrit项目,每个项目都有自己的Jenkins工作。我们使用this指南作为设置参考,一切都已安装并且显然正常工作。
我们的第一个项目已经完成,并使用样本更改补丁进行了测试。 Jenkins被正确触发,通过测试并按预期投票“已验证”到构建。到目前为止一切都很好!
但是:当我们尝试设置第二个项目时,我们发现其中一个项目中的更改补丁在每个jenkins工作中都发生了变化。例如:
假设我们有GerritProjectA和GerritProjectB,每个都有一个JenkinsProjectA和JenkinsProjectB。将更改提交给GerritProjectA时,会触发JenkinsProjectA和JenkinsProjectB。此外,在构建之后,gerrit投票中出现了一些混淆:这是sshd_log中的一个构建之后的信息(JenkinsProjectB中的一个):
gerrit approve 10,3 --message '\''Build Failed
http://jenkins-server:8080/job/projectA/6/ : FAILURE
http://jenkins-server:8080/job/projectB/59/ : Correcto'\!''\'' --
verified -2 --code-review 0' 14ms 6ms 1
正如你所看到的,gerrit approve命令与两个不同jenkins工作的信息混在一起......
任何jenkins工作的示例设置:
Repository URL: ssh://jenkins@gerrit-server:29418/projectA.git
Banches to build: $GERRIT_PATCHSET_REVISION
Build triggered by Gerrit event:
Project Type: Plain
Branches: Path **
软件版本:
Jenkins: 1.458
Gerrit plugin: 2.5.1
Gerrit: 2-3 rc0
有什么想法吗?提前谢谢!
多明戈
答案 0 :(得分:1)
发现问题:
其中一个Jenkins作业(我们称之为JenkinsJobB),在配置的“Gerrit Trigger”部分中没有模式中git存储库的名称。
如果你有gerrit项目的多个jenkins工作,你需要像这样设置gerrit触发器(至少在我的情况下):
Type: Plain
Pattern: (repository name)
Branches
Type: Path
Pattern: ** (or the branch name if you just want to watch one).