从命令行和Windows服务运行Jenkins

时间:2017-07-11 09:09:51

标签: java svn jenkins proxy

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

  1. 从命令行启动Jenkins并使用必需的参数
  2. 启动Jenkins作为Windows服务,而参数在jenkins.xml文件中定义。
  3. 从命令行开始

    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作为服务时,无法访问repo(通过代理),我收到此错误消息:

    unable to access repository error

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

    System Properties

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

    jenkins.wrapper.log
    jenkins.out.log
    

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

1 个答案:

答案 0 :(得分:1)

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

有关含义,请参阅MSDN: Using the LocalSystem Account as a Service Logon AccountSO: The difference between the 'Local System' account and the 'Network Service' account?