0

我是 Jenkins 的新手,无论我尝试从哪里(Git、SVN 等)检查代码,我都会收到以下错误。我在 Tomcat 6.0.37 上使用 Jenkins 1.514 和 oracle JDK 1.7.0_25,并收到以下错误。

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

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

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

谢谢,肖恩

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

致命:(类:org/apache/commons/codec/binary/Base64OutputStream,方法:签名:(Ljava/io/OutputStream;ZI[B)V)函数致命的参数不兼容:(类:org/apache/commons/codec /binary/Base64OutputStream,方法:签名:(Ljava/io/OutputStream;ZI[B)V) 函数的参数不兼容 Finished: null

日志文件说:

2013 年 7 月 16 日下午 2:17:31 hudson.model.listeners.RunListener 报告警告:在 jenkins.model 的 hudson.model.PermalinkProjectAction$Permalink$3.apply(PermalinkProjectAction.java:134) 处的 RunListener 失败 java.lang.NullPointerException。 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) 在 hudson.model.ResourceController.execute(ResourceController.java:88) 在 hudson.model.Executor.run(Executor.java:241)

2013 年 7 月 16 日下午 2:17:31 hudson.model.Run onEndBuilding 警告:McWebAccessWS #7:未设置构建结果,因此标记为失败。这不应该发生。2013 年 7 月 16 日下午 2:17:31 hudson.model.Executor 运行严重:执行程序抛出异常 java.lang.VerifyError:(类:org/apache/commons/codec/binary/Base64OutputStream,方法:签名:(Ljava/ io/OutputSt ream;ZI[B)V) 在 hudson.util 的 hudson.console.ConsoleNote.encodeToBytes(ConsoleNote.java:180) 的 hudson.console.ConsoleNote.encodeTo(ConsoleNote.java:158) 的函数参数不兼容。 StreamTaskListener.annotate(StreamTaskListener.java:157) 在 hudson.util.StreamTaskListener._error(StreamTaskListener.java:132) 在 hudson.util.StreamTaskListener.fatalError(StreamTaskListener.java:149) 在 hudson.model.Run。

4

3 回答 3

3

让我们变得非常非常简单:

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

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

$ java -jar jenkins.jar

使用默认的 Jenkins 主页(我相信是 .jenkins)和默认端口(8080)。我们只是想把所有东西都设置好。

  • 不要安装任何插件。不要安装任何安全性。我们只是想让詹金斯现在进行结帐。

  • 如果您可以让 Jenkins 启动并运行,那么是时候设置一个测试作业了。这项工作唯一要做的就是结帐,并且只有在您按下Build按钮时才会结帐。一次一件事,让我们尝试让结帐工作。首先使用 Subversion 项目。颠覆。

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

  • 在 New Job 中,转到 Source Code Management 并选择 Subversion。将完整的存储库 URL 放入项目。确保 *Local Module Directory 为.,选择 Infinity,并采用默认值。

如果 Subversion 找不到存储库,它会给你一个错误。如果它无法登录,它会在 URL 框下方为您提供一个链接。单击该链接并登录。

  • 保存作业。这项工作只会结帐,并且只会在请求时进行检查。一步一步来。

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

确保结帐工作正常。它没有,控制台输出上是否显示任何内容它应该显示如下内容:

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)

如果它不起作用。使用Console Output的输出更新您的问题。这实际上比Tomcat日志更重要。

于 2013-07-16T21:59:54.150 回答
0

事实证明,这对我来说是一个典型的用户错误。我正在使用 Serena Dimensions 插件,该插件需要将一些特定于 Serena 的 jar 文件复制到 jenkins 的 WEB-INF/lib。

好吧,我复制了所需的 jar,无意中又复制了一个:commons-codec-1.3.jar。这是一个问题,因为 commons-codec-1.6.jar 已经存在于 WEB-INF/lib 中;因此,由于 1.3 版本在类路径中的位置更高,因此需要 v1.6 Base64OutputStream 的其他类改为使用 v1.3,从而引发上述错误。

愚蠢的税收有时是痛苦的。希望这对其他人有帮助。

  • 肖恩
于 2013-07-17T18:55:18.373 回答
0

请注意,有相关的https://issues.jenkins-ci.org/browse/JENKINS-19643,正如 SeanLon11 所写,这是由 commons-codec 的不兼容版本(Tomcat 容器 / Jenkins / plugins / swarm client for slave nodes)引起的。

于 2013-12-09T13:41:48.973 回答