为 Jenkins 服务配置系统属性

configuring system properties for Jenkins service

背景

我有以下 Jenkins 配置。


我们有几个 Ant 项目,我想使用 Jenkins 为其发布 Javadoc。

配置 Javadoc plugin, I quickly hit this issue 后,只显示 Javadoc 框架,没有任何内容。

一些阅读 (here and here) 告诉我我需要配置 Jenkins 的内容安全策略,这是通过修改传递给 Jenkins 的系统属性来完成的。

然而,尽管我四处寻找,但我还没有找到关于如何将这些系统属性传递给 Jenkins 服务 的明确文档。我该怎么做?

回答我自己的问题。

为 Jenkins 服务设置系统属性:

步骤

  1. 停止詹金斯 (service jenkins stop)。您将需要 root 权限。
  2. 编辑/etc/defaults/jenkins 文件。
  3. 为您要传递的 JAVA_ARGS 添加一行。
  4. JAVA_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP=\"your CSP configuration here\""
  5. 启动詹金斯(service jenkins start)。

说明

/etc/init.d/jenkins 中查找类似于以下内容的行:

NAME=jenkins
SCRIPTNAME=/etc/init.d/$NAME
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

这些告诉我们 Jenkins 守护进程将查找名为 /etc/default/jenkins 的文件。如果存在,它 . 就是那个文件。

如果您在 /etc/default/jenkins 中设置 $JAVA_ARGS,它将被替换为下面的行,位于 /etc/init.d/jenkins 文件的后面:

$SU -l $JENKINS_USER --shell=/bin/bash -c "$DAEMON $DAEMON_ARGS -- $JAVA $JAVA_ARGS -jar $JENKINS_WAR $JENKINS_ARGS" || return 2

备注

  1. 即使执行了上述操作,Javadoc 也可能无法正确加载。尝试进行硬刷新(Chrome 上的 Ctrl-Shift-R)。
  2. 如(Jenkins 文档)[https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy] 中所述,还有一种临时方法可以执行此操作。阅读该页面并尝试很好地理解其中的含义。
  3. 更改内容安全策略会产生严重影响,尤其是当您的 Jenkins 是 public 时。理解您正在修改的政策是值得的。