2017-05-17 102 views
1

我是Jenkins的新手,但真的很想看看Jenkins如何幫助我構建管道。作爲我們要求的一部分,我們需要能夠通過x64實例調用PowerShell腳本。我已經在Windows Server 2012 R2上安裝了Jenkins,開箱即用,PowerShell插件工作正常,但是通過x86引擎。據我所知,默認情況下,Jenkins使用x86版本的Java。沒問題。我已經安裝了Java的x64版本,修改後的Jenkins.xml如下所示:在Jenkins中通過x64運行PowerShell

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

...並重新啓動Jenkins服務。該服務可以重新啓動,但Web界面無響應。我嘗試重新啓動整個服務器,將JAVA_HOME系統環境變量設置爲C:\Program Files\Java\jre1.8.0_131,並卸載x86版本的Java無濟於事。

從我一直在閱讀中,這適用於大多數人,但不適合我。我還查看了jenkins.err.log和jenkins.out.log文件,看看有什麼跡象表明我爲什麼沒有從Web界面得到響應,而且他們什麼都沒有。

回答

2

亞當,我覺得你的正確,除了條目將需要引號。下面是我在PowerShell面向Jenkins中的所有功能,並且按預期工作。

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

64位Java和64位PowerShell,如您所需。

UPDATE:

這是我擦洗,但準確完整jenkins.xml。我從來不需要設置JAVA_HOME,也許有些東西正在挑選並且感到困惑。除了將可執行文件更改爲外部JVM(64位)以及添加了一些--https *參數之外,我對配置沒有做任何特別的事情,就像我說過的它一直在愉快地工作。

<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> 

你可以嘗試取消註釋的<interactive />節點看可能會拋出什麼錯誤,但可能不被記錄。

+0

我試過了,但服務無法啓動。 :/ –

1

有一種變通方法,您可以使用執行Windows批處理命令,而不是Windows PowerShell中並調用64位PowerShell中像下面

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

我想到了,但這不是一個可持續的解決方案。我寧願讓這個工作,並從我一直在閱讀它是絕對有可能的。 –

0

我最終只是感到沮喪,並將x64 JRE複製到C:\ Program Files(x86)\ Jenkins \ jre文件夾中,一切正常。