我正在尝试将Jenkins作为服务安装在Windows Server 2008 Datacenter(SP2)上。我似乎无法让它作为服务运行而且我 寻找任何想法,以帮助实现目标。
当我尝试使用本机Windows软件包安装Jenkins时,我得到“错误1920.服务Jenkins无法启动。”在msiexec日志中。
我已经执行了以下手动安装步骤:
此时,詹金斯去世了,并没有回来。
当我尝试手动启动Jenkins时,我收到错误1053(服务没有响应)。我无法发现任何日志文件或其他信息。
欢迎任何想法或建议,我也很想听到 任何使用它在这个操作系统(或Windows 2003服务器)上工作的人。
非常感谢
答案 0 :(得分:4)
版本1.498具有更强的安全性,可以将Jenkins Slave打破为服务。
https://issues.jenkins-ci.org/browse/JENKINS-16273
建议包括:
sc delete jenkinsslave-C__Jenkins
)<arguments>-Xrs -jar "%BASE%\slave.jar" -jnlpCredentials <user>:<password> -jnlpUrl http://<your server>/computer/<slave name>/slave-agent.jnlp</arguments>
我发现删除slave.jar并启动Web客户端作为登录用户效果最好,你得到一个秘密,不需要编辑XML。
如果我没有删除slave.jar,我发现编辑jenkins-slave.xml并删除secret
arguments
,而没有任何凭据(安全漏洞?)。见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 -->
...
答案 1 :(得分:1)
我在Windows 2003服务器上遇到过类似的问题。我已经安装了.net framwork 4.0但是jenkins(v1.4.60)不适用于这个框架。安装.net framework 2.0(v2.0.50727)后问题得到解决。
答案 2 :(得分: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)
答案 3 :(得分:0)
我遇到了同样的问题,但对我来说这是 jenkins.xml 配置文件的问题。这不是正确的XML,因此Jenkins无法正确加载它。我发现在管理员命令提示符中执行 jenkins.exe 是一个配置错误,它给了我一个正确的错误输出。
答案 4 :(得分:0)
我发现Jenkins服务的默认设置只允许256米的HEAP。我猜他们希望我们只编码“Hello World”。我偶然发现PermGen
错误后发现了这个问题。但我发现我无法纠正jenkins.xml
所有,
-Xrs -Xms<value> -Xmx<value> --XX:PermSize=<value> --XX:MaxPermSize=<value>
我只能在设置时启动Jenkins,
-Xrs -Xms<value> -XX:MaxPermSize=<value>
答案 5 :(得分:0)
我有同样的问题&amp;通过设置Java目录路径解决。
答案 6 :(得分:-1)
KCD提供的答案是完整且非常相关的。但是有些时候我们也会因为一个愚蠢的错误而面临这个问题。
我也遇到了类似的问题,当我从COMMAND PROMPT发起Jenkins时,我收到了错误消息。
我输入的命令是,
$: start jenkins.exe
在我提到自己的笔记之后,我发现这个问题要简单得多。我错误地使用了命令。应该是:
$: jenkins.exe start/stop/restart
正确输入命令后,问题就解决了。