一尘不染

从命令行运行Jenkins与作为Windows服务运行

jenkins

我遇到了一个非常奇怪的问题。我需要在Jenkins中配置代理,以便
能够访问其中一项作业的SVN存储库。我这样做有两种方式:

从命令行使用必需的参数启动Jenkins
在jenkins.xml文件中定义参数时,将Jenkins作为Windows服务启动。

Starting from command line :

C:\>java -DJENKINS_HOME="C:\.jenkins"

-Dhudson.model.DirectoryBrowserSupport.CSP
=”script-src 'unsafe-inline';” -Dhttp.proxyHost=localhost
-Dhttp.proxyPort=312
8 -Dhttps.proxyHost=localhost -Dhttps.proxyPort=3128 -jar
%JENKINS_HOME%\jenkins
.war

Starting as service (below is the jenkins.xml contents) :

<executable>java</executable>
<arguments>-DJENKINS_HOME="C:\.jenkins" -Dhudson.model.DirectoryBrowserSupport.CSP="`script-src 'unsafe-inline';`" -Dhttp.proxyHost=localhost -Dhttp.proxyPort=3128 -Dhttps.proxyHost=localhost -Dhttps.proxyPort=3128 -jar "%JENKINS_HOME%\jenkins.war"</arguments>

这是完全一样的。但是问题是,当我使用命令
行启动Jenkins时,代理可以正常工作。但是,当我将Jenkins作为
服务启动时,(通过代理)存储库无法访问,并且出现以下错误
消息:

无法访问存储库错误

请注意,如果我在“系统信息”部分中查看“系统属性” ,则在两种情况下代理参数看起来都相同,因此
可以正确应用配置:

系统属性

显然,Jenkins的启动方式有所不同,具体取决于启动方式(命令行或Windows服务)。加强这一假设的
是,我看到仅当我将Jenkins作为服务启动时才写入某些日志文件,而当我从命令行启动它时却没有写入。我正在谈论这些日志文件:

jenkins.wrapper.log
jenkins.out.log

与从命令行启动Jenkins一样,我需要做些什么来使Jenkins作为服务获得相同的结果?我缺少什么配置?


阅读 819

收藏
2020-07-25

共1个答案

一尘不染

Jenkins作为Windows服务不会在当前用户下运行,而是默认在LocalSystem帐户下运行。

请参阅MSDN:使用LocalSystem帐户作为服务登录帐户和SO:“ Local System”帐户和“ Network
Service”帐户之间的区别?对于影响。

2020-07-25