Jenkins问题记录

任务死锁#

Jenkins 每个节点都可以配置 Number of executors 属性,指定最大可执行的任务数量。

Jenkins 流水线会根据配置找到合适的节点上运行,另外在流水线中可以配置 node 或 agent 来指定在某个节点上运行。

一个 node 或 stage 在某个节点上运行时会消耗节点的 executors,如果有多个流水线同时运行,就有可能导致死锁现象发生。

还有一种情况,假如 Number of executors 设置为 1,当流水线分配到这个节点运行,然后在流水线里面的某个步骤又指定了在这个节点上运行,这时也会发生死锁。

目前还没有找到好的解决办法,只有尽量把 Number of executors 设置的大一点,避免耗尽的情况发生。

HTML Publisher 无法显示 CSS#

通过 htmlPublish 发布的 html 页面无法显示 CSS,也不能运行 JS。

查看页面的控制台,会发现提示:

Refused to apply inline style because it violates the following Content Security Policy directive: “style-src ‘self’”. Either the ‘unsafe-inline’ keyword, a hash (‘sha256-1wd1ZThP7qYud8IQ5Ry1st9sugDCAaural3CZ7vvJ4E=’), or a nonce (’nonce-…’) is required to enable inline execution.

原因是 Jenkins 默认禁止了相关的内容:https://www.jenkins.io/doc/book/security/configuring-content-security-policy/

解决方案是在 Jenkins 启动时设置参数:

JENKINS_JAVA_OPTIONS="-Dhudson.model.DirectoryBrowserSupport.CSP=\"\""

或者在 master 节点的 script console 中执行下面语句:

System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”, “”)

参考资料: https://stackoverflow.com/questions/35783964/jenkins-html-publisher-plugin-no-css-is-displayed-when-report-is-viewed-in-j

comments powered by Disqus