2

我们正在完成新 CI 系统的设置,包括用于自动化测试和代码审查的 git、gerrit 和 jenkins,我们发现了一个奇怪的情况:

我们有三个不同的 gerrit 项目,每个项目都有自己的 Jenkins 工作。我们使用指南作为设置参考,一切都已安装并且工作正常。

我们的第一个项目已经设置好,并使用示例更改补丁进行了测试。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 批准命令与两个不同 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

有任何想法吗?提前致谢!

多明戈

4

1 回答 1

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).
于 2012-04-09T19:19:42.197 回答