2013-07-16 142 views
0

我是Jenkins的新手,无论我尝试从(Git,SVN等)中检查代码,我都会收到以下错误消息。我在Tomcat 6.0.37上使用了Jenkins 1.514和Oracle JDK 1.7.0_25,并且收到下面的错误消息。Jenkins构建问题

我已经下载并配置了相关的插件,并且检查连接测试成功,所以我知道Jenkins能够与存储库服务器进行通信。

我已经配置Jenkins使用相同版本的Java(1.6),Maven(3.0.5)和Ant(1.9.1)来在本地和Jenkins所在的远程服务器上构建我的项目。但是,我认为构建不会下载代码。

我在做什么错?这可能是我用来启动Jenkins运行的Tomcat服务器的JDK的某种问题吗?

感谢, 肖恩

构建失败,出现以下信息发送到控制台:

FATAL: (class: org/apache/commons/codec/binary/Base64OutputStream, method: signature: (Ljava/io/OutputStream;ZI[B)V) Incompatible argument to function FATAL: (class: org/apache/commons/codec/binary/Base64OutputStream, method: signature: (Ljava/io/OutputStream;ZI[B)V) Incompatible argument to function Finished: null

日志文件说:

Jul 16, 2013 2:17:31 PM hudson.model.listeners.RunListener report WARNING: RunListener failed java.lang.NullPointerException at hudson.model.PermalinkProjectAction$Permalink$3.apply(PermalinkProjectAction.java:134) at jenkins.model.PeepholePermalink$RunListenerImpl.onCompleted(PeepholePermalink.java:194) at hudson.model.listeners.RunListener.fireCompleted(RunListener.java:199) at hudson.model.Run.execute(Run.java:1625) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:477) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:241)

Jul 16, 2013 2:17:31 PM hudson.model.Run onEndBuilding WARNING: McWebAccessWS #7: No build result is set, so marking as failure. This shouldn't happen. Jul 16, 2013 2:17:31 PM hudson.model.Executor run SEVERE: Executor threw an exception java.lang.VerifyError: (class: org/apache/commons/codec/binary/Base64OutputStream, method: signature: (Ljava/io/OutputSt ream;ZI[B)V) Incompatible argument to function at hudson.console.ConsoleNote.encodeToBytes(ConsoleNote.java:180) at hudson.console.ConsoleNote.encodeTo(ConsoleNote.java:158) at hudson.util.StreamTaskListener.annotate(StreamTaskListener.java:157) at hudson.util.StreamTaskListener._error(StreamTaskListener.java:132) at hudson.util.StreamTaskListener.fatalError(StreamTaskListener.java:149) at hudson.model.Run.handleFatalBuildProblem(Run.java:1659) at hudson.model.Run.execute(Run.java:1605) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:477) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:241)

回答

0

原来,这是我的一个典型的用户错误。我使用Serena Dimensions插件,并且插件需要将一些Serena特定的jar文件复制到jenkins的WEB-INF/lib中。

那么,我复制了所需的罐子,并无意中复制了一个额外的:commons-codec-1.3.jar。这是一个问题,因为commons-codec-1.6.jar已经存在于WEB-INF/lib中;所以由于1.3版本在类路径中选择得更高,所以需要v1.6 Base64OutputStream的其他类才会获得v1.3,从而引发上述错误。

愚蠢的税有时候很痛苦。希望这可以帮助别人。

  • 肖恩
3

让我们真的,真的很简单:

  • Jenkins拥有自己的内置应用程序servlet。让我们尝试一下,并消除由于Tomcat造成的任何复杂性。
  • 詹金斯应该带有内置的Subversion插件。我不知道Git插件是否内置。
  • Jenkins从Manage Jenkins-> Configure System中安装它的工具。它将这些工具安装在JENKINS_HOME目录下。我们会这样做。

关闭詹金斯。并尝试在命令行中运行它的目录:

$ java -jar jenkins.jar 

采取默认詹金斯家(我相信是.jenkins)和默认端口(8080)。我们只是试图让一切都安装好。

  • 请勿安装任何插件。不要安装任何安全措施。我们只是想让詹金斯现在结账。

  • 如果您可以让Jenkins启动并运行,那么您就可以设置测试任务了。这项工作将做的唯一一件事是结账,并且只有当您按下按钮时,才会结帐。当您按下Build按钮时。一次只能做一件事,让我们试着让结帐工作。首先使用Subversion项目。 Subversion。

  • 点击新工作。创建一份工作。给这个工作一个名字,并让它成为自由风格工作。一心一意。

  • 在New Job中,转到Source Code Management并选择Subversion。将完整的存储库URL放入项目中。确保*本地模块目录是.,选择Infinity并且采用默认值。

如果Subversion无法找到存储库,它会给你一个错误。如果无法登录,则会在URL框下方显示链接。点击该链接并输入登录信息。

  • 保存这份工作。这项工作将只会只有结帐,只会在请求时做检查。一步一步来。

  • 现在,转到您刚刚创建的工作,然后单击Build按钮。它应该给你一个Build#的构建。点击该版本号。现在点击控制台输出并查看结帐是否正常。

确保结帐正常。这不,不会对控制台输出任何显示它应该显示是这样的:

Started by an anonymous 
Building in workspace /opt/.jenkins/jobs/test/workspace 
Checking out http://svn.mycorp.com/svn/trunk/project at revision '2013-07-03T11:48:44.326 -0500' 
(Checkout) 

如果它不能正常工作。用您的控制台输出的输出更新您的问题。这实际上比Tomcat日志更重要。