2014-05-20 124 views
5

我們希望使用jenkins在Windows 2012 R2 x64上構建一些特定的軟件。 但是,當我試圖運行它,主節點發生故障WHIS此錯誤:如何在windows 2012 r2 x64上運行jenkins slave?

Connecting to 192.168.1.27 
Checking if Java exists 
C:\Program Files\Java\jdk1.6.0_30\bin\java.exe -version returned 1.6.0. 
Installing the Jenkins slave service 
ERROR: Message not found for errorCode: 0xC00000AC 
org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC00000AC 
    at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKLM(JIWinRegStub.java:102) 
    at hudson.util.jna.DotNet.isInstalled(DotNet.java:77) 
    at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:292) 
    at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:222) 
    at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:701) 
Caused by: jcifs.smb.SmbException: All pipe instances are busy. 
    at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:563) 
    at jcifs.smb.SmbTransport.send(SmbTransport.java:664) 
    at jcifs.smb.SmbSession.send(SmbSession.java:238) 
    at jcifs.smb.SmbTree.send(SmbTree.java:119) 
    at jcifs.smb.SmbFile.send(SmbFile.java:775) 
    at jcifs.smb.SmbFile.open0(SmbFile.java:989) 
    at jcifs.smb.SmbFile.open(SmbFile.java:1006) 
    at jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:142) 
    at jcifs.smb.TransactNamedPipeOutputStream.<init>(TransactNamedPipeOutputStream.java:32) 
    at jcifs.smb.SmbNamedPipe.getNamedPipeOutputStream(SmbNamedPipe.java:187) 
    at rpc.ncacn_np.RpcTransport.attach(RpcTransport.java:91) 
    at rpc.Stub.attach(Stub.java:104) 
    at rpc.Stub.call(Stub.java:109) 
    at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKLM(JIWinRegStub.java:100) 

,我不知道什麼是錯。

是的,我已經仔細閱讀this

upd。好。我從域中刪除了服務器。現在,詹金斯說:

Connecting to 192.168.1.27 
    Checking if Java exists 
    C:\Program Files\Java\jdk1.6.0_30\bin\java.exe -version returned 1.6.0. 
    Installing the Jenkins slave service 
    Copying jenkins-slave.exe 
    Copying slave.jar 
    Copying jenkins-slave.xml 
    Registering the service 
    Starting the service 
    Waiting for the service to become ready 
    ERROR: The service did not respond. Perhaps it failed to launch?

在事件查看我看到:

Service cannot be started. System.ComponentModel.Win32Exception: The system cannot find the file specified 
     at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) 
     at winsw.WrapperService.StartProcess(Process process, String arguments, String executable) 
     at winsw.WrapperService.OnStart(String[] _) 
     at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)
+0

您確定您正在使用的Java是64位版本嗎?什麼是'java -version'輸出? –

+0

@EldadAK是的。它的x64: C:\ Users \ administrator> java -version java版本「1.6.0_30」 Java™SE運行時環境(build 1.6.0_30-b12) Java HotSpot™64位服務器VM (構建20.5-b03,混合模式)' – Psychozoic

+1

你能夠從Win服務器上的命令行啓動slave嗎?如果是的話,這與服務實施有關。我發現手動啓動從站,並要求它作爲服務安裝最適合我。 –

回答

8

我有同樣的問題在Windows上2012 R2 x64系統:

Installing the Jenkins slave service 
ERROR: Message not found for errorCode: 0xC00000AC 
org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC00000AC 
    at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKLM(JIWinRegStub.java:102) 
    at hudson.util.jna.DotNet.isInstalled(DotNet.java:77) 
    at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:292) 
    at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:228) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: jcifs.smb.SmbException: All pipe instances are busy. 
    at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:563) 
    at jcifs.smb.SmbTransport.send(SmbTransport.java:664) 
    at jcifs.smb.SmbSession.send(SmbSession.java:238) 
    at jcifs.smb.SmbTree.send(SmbTree.java:119) 
    at jcifs.smb.SmbFile.send(SmbFile.java:775) 
    at jcifs.smb.SmbFile.open0(SmbFile.java:989) 
    at jcifs.smb.SmbFile.open(SmbFile.java:1006) 
    at jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:142) 
    at jcifs.smb.TransactNamedPipeOutputStream.<init>(TransactNamedPipeOutputStream.java:32) 
    at jcifs.smb.SmbNamedPipe.getNamedPipeOutputStream(SmbNamedPipe.java:187) 
    at rpc.ncacn_np.RpcTransport.attach(RpcTransport.java:91) 
    at rpc.Stub.attach(Stub.java:104) 
    at rpc.Stub.call(Stub.java:109) 
    at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKLM(JIWinRegStub.java:100) 
    ... 7 more 

,並已發現,作爲一個服務需要安裝.NET 3.x中(這是不是要運行詹金斯從默認情況下在win2012服務器上)。

具有3.5的.NET Framework安裝詹金斯從服務後無問題(和保持在域名服務器)安裝得到。

爲了不鬆動的情況下你最好在安裝3.5框架和我一樣打的問題,請參見本SO回答:Offline installer for .Net 3.5 SP1 not working(禁用WSUS幫我打通安裝)

+0

但我得到另一個錯誤: 檢查是否存在的Java Java的版本返回1.6.0 複製詹金斯-slave.xml 複製slave.jar 開始等待服務的服務 準備就緒 錯誤:服務沒有迴應,也許它沒有啓動? –

+0

我知道這可能聽起來很愚蠢,但你有沒有在[Jenkins頁面](https://wiki.jenkins-ci.org/)上檢查你在Win2012上還需要做什麼?顯示/ JENKINS /視窗+奴+失敗+至+經由+ DC +開始OM)?您需要完成註冊表設置才能使服務能夠遠程啓動。 – peepa

+0

謝謝!這是我的問題 – Psychozoic

0

我有一個Windows 8的奴隸,這確實工作。公平的機會了Java路徑不正確,我的設置爲C:\ Program Files文件(x86)的\的Java \ jre7 \ BIN \ java中(是,否.exe或任何東西,只是調整的計劃(86)文件的一部分如果你想使用x64版本)在詹金斯。我也有遠程根集(給C:\詹金斯),我有一個環境變量HOME設定爲C:\詹金斯\(是的,一個與\,另一種沒有),但是這只是爲了方便安裝後找到這些文件。

我的奴隸工作,出現在網上,然後經過一段時間(主要是空閒)將有連接問題。斷開連接和重新連接有時會出現'所有管道實例都很忙'的錯誤,在這種情況下,我只需要執行幾次啓動子代理程序。找到你的問題,當試圖解決特定問題...

0

首先,你可以去奴隸機,去詹金斯 - >管理 - >管理節點,並選擇奴隸和啓動通過Java Web開始。

通過這樣做,你將下載.jnlp文件,並使用你配置好java啓動它。

確保您已配置路徑javaws.exe系統變量「PATH」(1.6或更高版本)。

它將啓動一個窗口並顯示爲「已連接」。 現在你可以點擊「文件」並安裝爲服務。

這個失敗給你,如果機器沒有.NET 3.X所以一定要確保你已經安裝了它,然後再試一次例外。

這工作相當乾淨沒有任何問題。 希望這有助於。

+1

是的,但是它反轉了控制,你現在必須進入節點,並且知道他們想要哪個主人,這是一個可怕的解決方案,與SSH插件的工作原理相比。 – TechZilla

1

我有這個問題:

服務無法啓動。 System.ComponentModel.Win32Exception:系統無法找到文件中指定 在System.Diagnostics.Process.StartWithCreateProcess(的ProcessStartInfo的StartInfo) 在winsw.WrapperService.StartProcess(工藝過程中,字符串參數,字符串可執行) 在winsw.WrapperService.OnStart (字符串[] _) 在System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(對象狀態)

和問題走了,當我從更改路徑,Java可執行文件: C:\ ProgramData \ ORACLE \的Java \ javapath \ javaw進程 至 C:\ ProgramData \ Oracle \ Java \ javapath \ java 無論如何,我認爲'w'是由JENKINS附加的。

0

對於我來說,這個問題已經通過卸載舊的java解決了。

相關問題