2014-05-20 8 views
5

Wir wollen jenkins verwenden, um eine bestimmte Software unter Windows 2012 R2 x64 zu erstellen. Aber wenn ich es laufen versuchen, Master-Knoten ausfällt whis diesen Fehler:Wie jenkins Slave auf Windows 2012 r2 x64 laufen?

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) 

und ich weiß nicht, was falsch ist.

Ja, ich habe this sorgfältig gelesen.

upd. OK. Ich habe den Server aus der Domäne entfernt. Jetzt sagt jenkins:

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?

In Eventviewer Ich sehe:

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

Sind Sie sicher, dass das von Ihnen verwendete Java eine 64-Bit-Version ist? Was ist die 'java -version' Ausgabe? –

+0

@ EldadAK ja. Seine x64: 'C: \ Benutzer \ Administrator> Java-Version Java-Version" 1.6.0_30 " Java (TM) SE Laufzeitumgebung (Build 1.6.0_30-b12) Java HotSpot (TM) 64-Bit-Server-VM (Build 20.5-b03, gemischter Modus) ' – Psychozoic

+1

Können Sie den Slave über die Befehlszeile auf dem Win-Server starten? Wenn ja, hängt dies mit der Service-Implementierung zusammen. Ich habe festgestellt, dass das manuelle Starten des Slaves und das Installieren als Service am besten für mich funktioniert. –

Antwort

8

hatte ich das gleiche Problem auf 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 

und haben herausgefunden,, dass Slave jenkins ausgeführt werden als ein Dienst .net 3.x installiert sein muss (was nicht der Fall ist Standardmäßig auf Win2012-Servern).

Nachdem das 3.5 .net Framework installiert wurde, wurde der jenkins-Slave-Dienst ohne Probleme installiert (und der Server blieb in der Domäne).

Um nicht lose Zeit im Falle würden Sie Probleme schlagen, während 3.5 Framework zu installieren, wie ich das so tat, siehe Antwort: Offline installer for .Net 3.5 SP1 not working (Deaktivierung der WSUS hat mir geholfen, die Installation bis hin zu bekommen)

+0

aber bekam ich einen anderen Fehler. prüft Java Java -Version 1.6.0 Kopieren zurück existiert jenkins-slave.xml Kopieren slave.jar Starten des Service für den Dienst Warten eRROR zu werden bereit: die Service hat nicht geantwortet Vielleicht hat es nicht gestartet –

+0

Ich weiß, es klingt vielleicht albern, aber haben Sie überprüft, was Sie auch auf Win2012 auf der [Jenkins Seite tun müssen] (https://wiki.jenkins-ci.org/ Anzeige/JENKINS/Windows + Slaves + Fail + zu + Start + über + DC OM)? Es gibt Registrierungseinstellungen, die Sie vornehmen müssen, damit der Dienst remote gestartet werden kann. – peepa

+0

danke! Es war mein Problem – Psychozoic

0

ich einen Windows 8 Slave haben, die Arbeit macht. Fair Chance der Java-Pfad ist falsch, meins ist auf C: \ Programme (x86) \ Java \ jre7 \ bin \ java (ja, keine .exe oder irgendetwas, stellen Sie nur die Programm (x86) Dateien Teil wenn Sie x64-Version verwenden möchten) in Jenkins. Ich habe auch Remote-Stammsatz (bis C: \ jenkins), und ich habe eine Umgebungsvariable HOME Set C: \ jenkins \ (ja, wird man mit \ und das andere ohne), aber das ist nur um die Dateien nach der Installation zu finden.

Mein Sklave funktioniert, erscheint online und nach einer Weile (von Leerlauf meist) wird Verbindungsprobleme haben. Trennen und erneut verbinden wird dann manchmal die 'Alle Pipe-Instanzen sind beschäftigt' Fehler, in diesem Fall muss ich nur tun, Starten Sie Slave-Agent ein paar Mal. Ihre Frage beim Versuch, dieses spezielle Problem zu lösen ...

0

Als Erstes können Sie zum Slave-Rechner gehen, Gehe zu Jenkins -> Verwalten -> Knoten verwalten und wählen Sie den Slave und starten Sie über Java Web Start.

indem Sie dies tun, werden Sie eine .jnlp Datei herunterladen und starten Sie es mit Java von Ihnen konfiguriert.

Stellen Sie sicher, dass Sie den Pfad zu javaws.exe in der Systemvariablen "PATH" (mit Version 1.6 oder höher) konfiguriert haben.

Es wird ein Fenster gestartet und als "Verbunden" angezeigt. Jetzt können Sie auf "Datei" klicken und als Dienst installieren.

Dies schlägt fehl, Ihnen eine Ausnahme zu geben, wenn der Computer .NET 3.x nicht hat, also stellen Sie sicher, dass Sie es installiert haben, und versuchen Sie es dann erneut.

Dies funktioniert ziemlich sauber ohne Probleme. Hoffe, das hilft.

+1

ja, aber es invertiert die Kontrolle. Sie müssen jetzt auf die Knoten und wissen, welche Meister sie wollen., Es ist eine schreckliche Lösung, im Vergleich zu wie sauber das SSH-Plugin funktioniert. – TechZilla

1

Ich hatte dieses Problem :

Dienst kann nicht gestartet werden. System.ComponentModel.Win32Exception: Das System kann die angegebene Datei bei System.Diagnostics.Process.StartWithCreateProcess (ProcessStartInfo startInfo) bei Winsww.WrapperService.StartProcess (Process-Prozess, String-Argumente, ausführbare Zeichenfolge) bei WinswrapperService.OnStart nicht finden (String [] _) bei System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback (Object state)

Und das Problem ging weg, wenn ich aus dem weg zu ausführbaren Java-Datei geändert: C: \ Programdata \ Oracle \ Java \ javapath \ javaw bis C: \ ProgramData \ Oracle \ Java \ javapath \ java Ich denke 'w' wird von JENKINS sowieso angehängt.

0

Für mich wurde dieses Problem durch die Deinstallation von alten Java gelöst.