2013-07-16 179 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日誌更重要。