2017-05-17 3 views
1

Ich bin ein Jenkins-Neuling, aber ich möchte wirklich sehen, wie Jenkins mir in unserer Build-Pipeline helfen kann. Als Teil unserer Anforderung müssen wir in der Lage sein, PowerShell-Skripte über die x64-Instanz aufzurufen. Ich habe Jenkins auf Windows Server 2012 R2 installiert und das PowerShell-Plugin funktionierte problemlos, aber über die x86-Engine. Wie ich gelernt habe, verwendet Jenkins standardmäßig die x86-Version von Java. Kein Problem. Ich habe die x64-Version von Java, modifizierte Jenkins.xml installiert wie folgt aussehen:Running PowerShell über x64 in Jenkins

<executable>C:\Program Files\Java\jre1.8.0_131\bin\java.exe</executable> 

... und neu gestartet, die Jenkins-Service. Der Dienst wird neu gestartet, aber die Webschnittstelle reagiert nicht. Ich habe versucht, den gesamten Server neu zu starten, die Systemumgebungsvariable JAVA_HOME auf C:\Program Files\Java\jre1.8.0_131 zu setzen und die x86-Version von Java vergeblich zu deinstallieren.

Von dem, was ich gelesen habe, funktioniert dies für die meisten Menschen, aber nicht für mich. Ich habe mir auch die Dateien jenkins.err.log und jenkins.out.log angeschaut, um einen Hinweis darauf zu bekommen, warum ich keine Antwort von der Weboberfläche bekomme und sie nichts enthalten.

Antwort

2

Adam, ich glaube, Ihre korrekte außer dem Eintrag würde Anführungszeichen erfordern. Hier ist, was ich in meinem sehr PowerShell orientierten Jenkins habe und alles funktioniert wie erwartet.

<executable>"C:\Program Files\Java\jre1.8.0_131\bin\java.exe"</executable> 

64 Bit Java und 64 Bit PowerShell, wie Sie benötigen.

UPDATE:

Hier ist meine geschrubbt, aber genaue volle jenkins.xml. Ich musste JAVA_HOME nie setzen, vielleicht nimmt etwas das auf und wird verwirrt. Abgesehen von der Änderung der ausführbaren Datei auf eine externe JVM (64bit) und einigen --https * -Parametern habe ich nichts Außergewöhnliches an der Konfiguration vorgenommen und wie gesagt, dass es schon eine ganze Weile gut funktioniert hat.

<service> 
    <id>jenkins</id> 
    <name>Jenkins</name> 
    <description>This service runs Jenkins continuous integration system.</description> 
    <env name="JENKINS_HOME" value="%BASE%"/> 
    <!-- 
    if you'd like to run Jenkins with a specific version of Java, specify a full path to java.exe. 
    The following value assumes that you have java in your PATH. 
    --> 
    <!--<executable>%BASE%\jre\bin\java</executable>--> 
    <executable>"C:\Program Files\Java\jre1.8.0_131\bin\java.exe"</executable> 
    <arguments>-Xrs -Xms1G -Xmx1G -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --webroot="%BASE%\war" --ajp13Port=-1 --httpPort=-1 --httpsPort=8443 --httpsListenAddress=192.0.0.192 --httpsKeyStore=C:\MyJavaKeyStore.jks --httpsKeyStorePassword=PasswordToSaidJKS</arguments> 
    <!-- 
    interactive flag causes the empty black Java window to be displayed. 
    I'm still debugging this. 
    <interactive /> 
    --> 
    <logmode>rotate</logmode> 

    <onfailure action="restart" /> 
</service> 

Sie könnten versuchen, den <interactive /> Knoten-un zu kommentieren, um zu sehen, welche Fehler geworfen werden könnte, aber möglicherweise nicht protokolliert.

+0

Ich habe das versucht, aber der Dienst würde dann nicht starten. : / –

1

Es gibt eine Abhilfe, können Sie den Befehl Windows-Batch ausführen können anstelle von Windows Powershell und rufen Sie die x64 Powershell wie unter

"C:\Windows\SysNative\WindowsPowerShell\v1.0\Powershell.exe" -ExecutionPolicy ByPass -noprofile -file "<Folder Path of file>\Psscript.ps1" -<Parameter> "<Parameter value>" 
+0

Ich dachte daran, aber es ist keine nachhaltige Lösung. Ich würde es lieber zur Arbeit bringen und nach dem, was ich gelesen habe, ist es definitiv möglich. –

0

Ich endete gerade frustriert und Kopieren der x64 JRE in den C: \ Programme (x86) \ Jenkins \ jre Ordner und alles funktionierte.