gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:27:54 26 4
gpt4 key购买 nike

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

  1. 使用所需参数从命令行启动 Jenkins
  2. 将 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 作为服务启动时,无法访问存储库(通过代理)并且我收到此错误消息:

unable to access repository error

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

System Properties

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

jenkins.wrapper.log
jenkins.out.log

我需要做哪些不同的事情才能从 Jenkins 获得与从命令行启动时相同的服务结果?我缺少什么配置?

最佳答案

作为 Windows 服务的 Jenkins 不在您当前的用户下运行,而是在 LocalSystem Account 下运行默认情况下。

参见 MSDN: Using the LocalSystem Account as a Service Logon AccountSO: The difference between the 'Local System' account and the 'Network Service' account?的含义。

关于java - 从命令行运行 Jenkins 与作为 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45030130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com