为 Jenkins 服务配置系统属性
configuring system properties for Jenkins service
背景
我有以下 Jenkins 配置。
- Ubuntu机器
- Jenkins 使用
apt-get
安装,并作为服务启动 (service jenkins start
)。
- 到目前为止,我还没有对 Jenkins 配置进行任何修改。
我们有几个 Ant 项目,我想使用 Jenkins 为其发布 Javadoc。
配置 Javadoc plugin, I quickly hit this issue 后,只显示 Javadoc 框架,没有任何内容。
一些阅读 (here and here) 告诉我我需要配置 Jenkins 的内容安全策略,这是通过修改传递给 Jenkins 的系统属性来完成的。
然而,尽管我四处寻找,但我还没有找到关于如何将这些系统属性传递给 Jenkins 服务 的明确文档。我该怎么做?
回答我自己的问题。
为 Jenkins 服务设置系统属性:
步骤
- 停止詹金斯 (
service jenkins stop
)。您将需要 root 权限。
- 编辑
/etc/defaults/jenkins
文件。
- 为您要传递的
JAVA_ARGS
添加一行。
JAVA_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP=\"your CSP configuration here\""
- 启动詹金斯(
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
备注
- 即使执行了上述操作,Javadoc 也可能无法正确加载。尝试进行硬刷新(Chrome 上的 Ctrl-Shift-R)。
- 如(Jenkins 文档)[https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy] 中所述,还有一种临时方法可以执行此操作。阅读该页面并尝试很好地理解其中的含义。
- 更改内容安全策略会产生严重影响,尤其是当您的 Jenkins 是 public 时。理解您正在修改的政策是值得的。
背景
我有以下 Jenkins 配置。
- Ubuntu机器
- Jenkins 使用
apt-get
安装,并作为服务启动 (service jenkins start
)。 - 到目前为止,我还没有对 Jenkins 配置进行任何修改。
我们有几个 Ant 项目,我想使用 Jenkins 为其发布 Javadoc。
配置 Javadoc plugin, I quickly hit this issue 后,只显示 Javadoc 框架,没有任何内容。
一些阅读 (here and here) 告诉我我需要配置 Jenkins 的内容安全策略,这是通过修改传递给 Jenkins 的系统属性来完成的。
然而,尽管我四处寻找,但我还没有找到关于如何将这些系统属性传递给 Jenkins 服务 的明确文档。我该怎么做?
回答我自己的问题。
为 Jenkins 服务设置系统属性:
步骤
- 停止詹金斯 (
service jenkins stop
)。您将需要 root 权限。 - 编辑
/etc/defaults/jenkins
文件。 - 为您要传递的
JAVA_ARGS
添加一行。 JAVA_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP=\"your CSP configuration here\""
- 启动詹金斯(
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
备注
- 即使执行了上述操作,Javadoc 也可能无法正确加载。尝试进行硬刷新(Chrome 上的 Ctrl-Shift-R)。
- 如(Jenkins 文档)[https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy] 中所述,还有一种临时方法可以执行此操作。阅读该页面并尝试很好地理解其中的含义。
- 更改内容安全策略会产生严重影响,尤其是当您的 Jenkins 是 public 时。理解您正在修改的政策是值得的。