运行 来自命令行的 Jenkins 与 Windows 服务
Running Jenkins from command line vs as Windows service
我 运行 遇到了一个非常难 运行 的问题。我需要在我的 Jenkins 中配置代理,以便能够在其中一项工作中访问 SVN 存储库。我通过两种方式做到了:
- 使用所需参数从命令行启动 Jenkins
- 将 Jenkins 作为 Windows 服务启动,而参数在
jenkins.xml
文件中定义。
从命令行开始:
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
作为服务启动(下面是jenkins.xml内容):
<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 获得与从命令行启动时相同的服务结果?我缺少什么配置?
作为 Windows 服务的 Jenkins 不在您当前用户下 运行,但默认情况下在 LocalSystem Account 下。
有关含义,请参阅 MSDN: Using the LocalSystem Account as a Service Logon Account and SO: The difference between the 'Local System' account and the 'Network Service' account?。
我 运行 遇到了一个非常难 运行 的问题。我需要在我的 Jenkins 中配置代理,以便能够在其中一项工作中访问 SVN 存储库。我通过两种方式做到了:
- 使用所需参数从命令行启动 Jenkins
- 将 Jenkins 作为 Windows 服务启动,而参数在
jenkins.xml
文件中定义。
从命令行开始:
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
作为服务启动(下面是jenkins.xml内容):
<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 获得与从命令行启动时相同的服务结果?我缺少什么配置?
作为 Windows 服务的 Jenkins 不在您当前用户下 运行,但默认情况下在 LocalSystem Account 下。
有关含义,请参阅 MSDN: Using the LocalSystem Account as a Service Logon Account and SO: The difference between the 'Local System' account and the 'Network Service' account?。