2012-02-07 155 views
4

我試圖讓Jenkins作爲Windows Server 2008 Datacenter(SP2)上的服務安裝。我似乎無法讓它作爲服務運行,並且正在尋找任何想法來幫助它實現目標。jenkins服務無法在Windows 2008上啓動

當我嘗試安裝Jenkins與本地Windows包時,我得到「錯誤1920.服務Jenkins無法啓動。」在msiexec日誌中。

我已經進行了手動安裝以下步驟:

  • Java安裝32位
  • 開始詹金斯與Java的罐子jenkins.war
  • 飄來管理詹金斯並將其設置爲運行一個Windows服務。
  • 告知Jenkins重新啓動自己作爲服務。

在這一點上,詹金斯死亡,並沒有回來。

當我嘗試手動啓動Jenkins時,出現錯誤1053(服務沒有響應)。我無法找到任何日誌文件或其他信息。

歡迎任何想法或建議,我也很想好好聽聽從 得到它在這個操作系統(或Windows 2003服務器)上工作的人。

非常感謝

回答

0

建議:如果你能在所有的避開它,不要運行詹金斯作爲Windows服務 - 你可以進入各種連接權限並在後臺運行的問題。缺點是它不會在機器重新啓動時自動啓動,但更多的人可以忍受這一點。根據我的經驗,Jenkins在撞擊方面非常強大。如果你想特別小心 - 編寫一個包裝器,它經常檢查Jenkins是否還活着(例如,通過嘗試通過HTTP連接到它),並在它已經死亡時重新啓動它。

附是一個Python腳本,它是(沒有任何擔保,負債等):

'''Usage: 
hudson.py [<http-port>]''' 

# Script to start/revive Hudson/Jenkins 
# The script checks if Hudson is alive by trying to connect to its HTTP port 
# if connection fails - it tries to restart Hudson 

import sys 
import time 
import httplib 
import os 

HTTPTimeout = 10 
CheckInterval = 300 
DefaultHudsonPort = 8081 

if (__name__ == '__main__'): 
    if len(sys.argv) > 2: 
     print __doc__ 
     sys.exit(1) 
    elif len(sys.argv) == 2: 
     portNum = int(sys.argv[1]) 
    else: 
     portNum = DefaultHudsonPort 

    httpConnection = None 
    while True: 
     if not httpConnection: 
      httpConnection = httplib.HTTPConnection("127.0.0.1", portNum, timeout = HTTPTimeout) 
     try: 
      httpConnection.connect() 
      httpConnection.close() 
     except: 
      print "(Re)Starting Hudson/Jenkins on port %d" % portNum 
      os.system("java -jar hudson.war --httpPort=%d" % portNum) 
     time.sleep(CheckInterval) 
+0

找到[修復](https://github.com/kohsuke/winsw/issues/6),但它對我來說不起作用。所以,我的修復很簡單 - 只需將jenkins安裝在其他機器上(使用相同的操作系統),並且一切正常。感謝您的建議! – Rinat 2012-02-08 14:29:52

+0

我不認爲這是一個好主意,我想不出一個良好的環境,你應該打開會議,因爲產品不支持一個功能,因爲它應該 – 2017-07-10 14:04:44

1

我對Windows 2003 Server的類似問題。我已經安裝.net framwork 4.0,但jenkins(v1.4.60)不支持這個框架。安裝.net framework 2.0(v2.0.50727)後,問題解決了。

4

版本1.498具有更強的安全性,可以打破詹金斯奴隸作爲服務。

https://issues.jenkins-ci.org/browse/JENKINS-16273

建議包括:

  1. 停止服務
  2. 卸載如果存在DOS服務(sc delete jenkinsslave-C__Jenkins
  3. 刪除舊的詹金斯-訊天創t05,slave.jar和詹金斯-slave.xml
  4. 啓動網絡客戶端並讓它安裝服務
  5. 編輯詹金斯 - 奴隸。XML所以它看起來像這樣的重要組成部分,是<arguments>-Xrs -jar "%BASE%\slave.jar" -jnlpCredentials <user>:<password> -jnlpUrl http://<your server>/computer/<slave name>/slave-agent.jnlp</arguments>

我發現刪除slave.jar並啓動Web客戶端的登錄的用戶最好的工作,你會得到一個祕密,需要jnlpCredentials編輯XML。

如果我沒有刪除slave.jar,我發現編輯jenkins-slave.xml和刪除作品沒有任何證書(安全漏洞?)。參見Jenkins-slave.err

"-secret" is not a valid option 

詹金斯-slave.xml

... 
<service> 
    <id>jenkinsslave-D__Jenkins</id> 
    <name>Jenkins Slave</name> 
... 
    <executable>C:\Program Files\Java\jre7\bin\java.exe</executable> 
    <arguments>-Xrs -jar "%BASE%\slave.jar" -jnlpUrl http://jenkins.domain/jenkins/computer/mycomputername/slave-agent.jnlp </arguments> <!-- -secret fafd7bf18fdcc48ffb17fe1ff0a072ce5d33b004769b351e9d633f875b63fb59 --> 
... 
+0

添加jlnpCredentials是不相關的,並且不再需要v1 .514;) – 2013-05-04 11:42:38

+0

是的,我認爲這個祕密取代了憑據,它並不是有效的, – KCD 2013-05-06 02:45:18

+0

我會把芯片放在事實上,如果你有v1.499之前的版本,那麼根據slave.xml取得一些代碼路徑。 。但現在,如果你創建新的奴隸,它們被保存在jenkins-service.exe.config(或類似的:)文件)... – 2013-05-07 13:28:03

0

我有同樣的問題,但對我來說,與jenkins.xml配置文件有問題。這是不正確的XML,因此詹金斯無法正確加載它。我發現這是一個配置錯誤,在管理員的命令提示符下執行jenkins.exe,它給了我一個合適的錯誤輸出。

0

我發現Jenkins服務的默認設置只允許256m的HEAP。我想他們希望我們只編寫「Hello World」。偶然的PermGen錯誤後我發現了這個。但是我發現,我不能糾正jenkins.xml所有的,

-Xrs -Xms<value> -Xmx<value> --XX:PermSize=<value> --XX:MaxPermSize=<value> 

我只能開始詹金斯而設置,

-Xrs -Xms<value> -XX:MaxPermSize=<value> 
-1

由KCD提供的答案是完整的,非常相關。但是由於一個愚蠢的錯誤,我們也面臨這個問題的一些時候。

我也遇到類似的問題,我從COMMAND PROMPT發起Jenkins時收到了錯誤信息。

,我是進入了該命令,

$: start jenkins.exe 

後,當我提到我自己的筆記,我發現這個問題要簡單得多。我錯誤地使用了這個命令。它應該是:

$: jenkins.exe start/stop/restart 

正確輸入命令後,問題得到解決。

+0

「由KCD提供的答案是完整且相當相關的」。我同意 – MatteoSp 2013-11-26 14:59:53

0

我得到了同樣的問題&通過設置Java目錄路徑解決。

相關問題