2014-05-09 113 views
2

我试图使用gerrit和jenkins来设置CI进程。我已经成功配置了jenkins来触发构建gerrit事件,并且在这个前沿上一切正常,我可以在jenkins日志中看到构建成功。我遇到的问题是试图将构建结果发送回gerrit。我已经设置了格里特集成“生成后行动”,和所有的领域看起来是正确的,但是当我做构建我得到这个堆栈跟踪:Jenkins在尝试传播到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)错误不会不看所有像连接错误)

编辑:最佳的事情将是詹金斯设置+ 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) 

(甚至没有“已完成:失败”警告)

删除在生成后行动的结果“说完:SUCCESS”,但什么也没有显示在格里特起来。

+0

可以请给出有关gerrit触发器高级设置的截图吗?顺便说一句,如果你不使用git插件的话。 – HiB

+0

也请添加应该以“Gerrit触发”作业开始的作业输出,然后是更改链接。顺便说一句 - 你使用[这个插件](https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger)? – HiB

+0

这里是工作输出:https://gist.github.com/kesinger/16e7b3a9c3c243df79a9 – JCK

回答

0

我假设你使用these instructions来设置Gerrit插件。因此请仔细检查Git Plugin设置和Advanced...部分Gerrit触发器设置,这些设置从指南中缺少。如果要发布的网址帕拉姆为空,那么结果消息将包含生成结果网址 - 并且您可以为每个结果设置自定义消息自定义生成消息。验证值可以设置为验证小节。
如果所有的git插件设置配置正确,你根本不需要打扰git repo。这个相关的answer也许是有用的。
如果一切正常,无需定义任何生成后操作。除非你想设置一个UNSTABLE状态...

+0

我不是使用git插件,因为我们需要多个存储库来完成整个构建。 我修改了构建目标并尝试了一下,并得到了一个不同的异常,我将编辑到我的原始消息中。拿出构建后的行动,我得到了“成品:成功”的通知,但没有出现在gerrit中。 – JCK

0

如果你正在使用Gerrit触发器,并且在Gerrit中什么也没有显示,即使一切设置正确,你可能想看看Gerrit服务器设置(Jenkins - > Manage Jenkins - > Gerrit触发器 - >您的服务器名称在'Gerrit服务器'下)。

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

1

我有同样的问题,发现this解决方案:
停用“哈德森格里特插件” V0.7

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

相关问题