【问题标题】:Errors in Jenkins when trying to propagate to Gerrit server尝试传播到 Gerrit 服务器时 Jenkins 中的错误
【发布时间】: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

标签: jenkins gerrit


【解决方案1】:

我遇到了同样的问题,找到this解决方案:
停用“Hudson Gerrit 插件”V0.7

它对我有用。
显然我不需要这个插件 - 停用它后没有任何功能消失(据我所知,'直到现在......)。

【讨论】:

    【解决方案2】:

    我假设您使用 these instructions 设置 Gerrit 插件。因此,请仔细检查 Git Plugin 设置和 Gerrit Trigger 设置中的 Advanced... 部分,这是指南中缺少的。如果 要发布的 URL 参数为空,则结果消息将包含构建结果 URL - 您可以在 自定义构建消息 处为每个结果设置自定义消息。验证值可以在 Verify 小节中设置。
    如果所有 git 插件设置配置正确,您根本不需要使用 git repo。这个相关的answer 或许也很有用。
    如果一切正常,则无需定义任何构建后操作。除非你想设置一个 UNSTABLE 状态...

    【讨论】:

    • 我没有使用 git 插件,因为我们需要多个存储库来完成完整的构建。我修改了构建目标并尝试了一下,得到了一个不同的异常,我将在我的原始消息中进行编辑。取出构建后操作,我收到“完成:成功”通知,但 gerrit 中没有显示任何内容。
    【解决方案3】:

    如果您正在使用 Gerrit 触发器,即使一切设置正确,Gerrit 中也没有显示任何内容,您可能需要查看 Gerrit 服务器设置(Jenkins -> Manage Jenkins -> Gerrit Trigger -> Your server name under 'Gerrit服务器)。

    根据您的 Gerrit 版本,如果单击“高级”按钮,您会发现 Gerrit 验证命令中的默认值可能设置错误。我有 Gerrit 2.8,必须更改 --label Verified=<VERIFIED> 中的 --label <VERIFIED> 参数 更一般地说,如果日志报告 Jenkins 已向 Gerrit 提供了反馈,但 Gerrit 界面中没有显示任何内容,可能是因为这些输入字段中的默认值设置错误。

    【讨论】:

      猜你喜欢
      • 2018-08-22
      • 2023-04-08
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多