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”, “”)