【发布时间】:2014-09-01 18:53:07
【问题描述】:
我正在尝试使用 gerrit 和 jenkins 设置 CI 流程。我已经成功配置 jenkins 以触发 gerrit 事件的构建,并且在这方面一切正常,我可以在 jenkins 日志中看到构建成功。我遇到的问题是试图将构建结果发送回 gerrit。我为 gerrit 集成设置了“构建后操作”,所有字段看起来都正确,但是当我进行构建时,我得到了这个堆栈跟踪:
ERROR: Publisher hudson.plugins.gerrit.GerritNotifier aborted due to exception
java.lang.IllegalArgumentException: Failed to find GIT_HOME in /var/lib/jenkins/jobs/jake/workspace/.git
at hudson.plugins.gerrit.git.GitTools.getHead(GitTools.java:45)
at hudson.plugins.gerrit.GerritNotifier$1.invoke(GerritNotifier.java:180)
at hudson.plugins.gerrit.GerritNotifier$1.invoke(GerritNotifier.java:171)
at hudson.FilePath.act(FilePath.java:914)
at hudson.FilePath.act(FilePath.java:887)
at hudson.plugins.gerrit.GerritNotifier.perform(GerritNotifier.java:171)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:714)
at hudson.model.Build$BuildExecution.post2(Build.java:182)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:663)
at hudson.model.Run.execute(Run.java:1714)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:231)
Finished: FAILURE
我在构建过程中输入了命令来检查文件系统,是的,我肯定没有 .git 目录。 (我确实有一个 /var/.../workspace/.repo/repo/.git,但是将其符号链接到 /var/.../workspace/.git 不起作用,尽管它给出了一个不同的错误,我希望我保存了,如果有帮助,我可以重新运行)
所以我的问题是:我应该如何配置 jenkins 作业以正确连接到 gerrit 服务器?
(我无法轻松访问 gerrit 服务器,但我假设事情已经在那里设置,因为(a)jenkins 正确地从中获取数据,并且(b)错误没有'看起来不像是连接错误)
编辑:jenkins 的最佳做法是在 Verified 选项中设置 +1/-1,具体取决于构建的结果,但即使它可以在评论页面上留下评论,并带有指向每次运行的链接,那至少是……
编辑 2:根据 HiB 的建议,我切换到了 git 插件,并得到了这个堆栈跟踪:
FATAL: org.eclipse.jgit.lib.Repository
java.lang.InstantiationError: org.eclipse.jgit.lib.Repository
at hudson.plugins.gerrit.git.GitTools.getRepository(GitTools.java:24)
at hudson.plugins.gerrit.git.GitTools.getHead(GitTools.java:48)
at hudson.plugins.gerrit.GerritNotifier$1.invoke(GerritNotifier.java:180)
at hudson.plugins.gerrit.GerritNotifier$1.invoke(GerritNotifier.java:171)
at hudson.FilePath.act(FilePath.java:914)
at hudson.FilePath.act(FilePath.java:887)
at hudson.plugins.gerrit.GerritNotifier.perform(GerritNotifier.java:171)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:714)
at hudson.model.Build$BuildExecution.post2(Build.java:182)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:663)
at hudson.model.Run.execute(Run.java:1714)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:231)
(甚至没有“完成:失败”警告)
删除构建后操作会导致“完成:成功”,但 gerrit 中没有显示任何内容。
【问题讨论】:
-
能否请您提供有关gerrit触发器高级设置的屏幕截图?顺便说一句,如果你不使用它,则不需要 git 插件。
-
还请添加应以“由 Gerrit 触发”开头的作业输出,然后是更改的链接。顺便说一句 - 你在使用this plugin吗?
-
这是屏幕截图,这是来自作业配置页面,所以它是默认值:imgur.com/KB1ecL1