![](/img/trans.png)
[英]Jenkins HTML publisher plugin when folder name contains a timestamp
[英]Jenkins - HTML Publisher Plugin - No CSS is displayed when report is viewed in Jenkins Server
想通了這個問題。 在這里分享給其他用戶。
由於 Jenkins 中的內容安全策略,CSS 被剝離。 ( https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy )
默認規則設置為:
sandbox; default-src 'none'; img-src 'self'; style-src 'self';
此規則集的結果如下:
要放寬此規則,請轉到
單擊左側的腳本控制台並輸入以下命令:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
並按運行。 如果您在“結果”標題下方看到輸出為“結果:”,則保護被禁用。 重新運行您的構建,您可以看到存檔的新 HTML 文件將啟用 CSS。
在CentOs 中,啟用 html 報告中的圖像
sudo vi /etc/sysconfig/jenkins
JENKINS_JAVA_OPTION
設置以下JENKINS_JAVA_OPTION
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\\"default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;\\""
即使在重新啟動 jenkins 的服務器后,這也將起作用。
指示
default-src : default-src 是加載內容的默認策略,如 JavaScript、圖像、CSS、字體、AJAX 請求、框架、HTML5 媒體
img-src:定義有效的圖像來源。
來源價值
' self ' -允許從相同的來源(相同的方案、主機和端口)加載資源。
用法:
default-src 'self'
' unsafe-inline ' -允許使用內聯源元素,例如 style 屬性、onclick 或腳本標記主體(取決於應用它的源的上下文)和 javascript: URI。
用法:
default-src 'unsafe-inline'
' unsafe-eval ' -允許不安全的動態代碼評估,例如 JavaScript eval()
用法:
default-src 'unsafe-eval'
數據: -允許通過數據方案加載資源(例如 Base64 編碼圖像)。
用法:
img-src 'self' data:
請在此處參考有關內容安全政策的更多信息
轉到“管理詹金斯”->“腳本控制台”並運行以下命令:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
(以下解決方案適用於 Windows。)
永久修復是更改[Jenkins directory]\\jenkins.xml
(對我來說它在C:\\Jenkins\\jenkins.xml
)
<executable>java.exe</executable>
<arguments>[arguments are here]</arguments>
將以下參數添加到以空格分隔的參數列表中:
-Dhudson.model.DirectoryBrowserSupport.CSP=
然后重新啟動 Jenkins 服務以獲取更改。
您可以使用Vall的回答中指定的 groovy 命令來解決此問題。
效果會一直存在,直到 Jenkins 重新啟動,之后您必須再次執行此操作。
解決此問題的一個解決方案是配置一個作業,該作業將在 jenkins 啟動時為您執行此操作。
您可以使用Startup Trigger 插件來完成此操作。
安裝后創建一個新作業,您將在Build Triggers部分下有一個新復選框,您必須檢查該復選框。
然后使用以下命令添加執行系統 Groovy 腳本構建步驟:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
保存,一切都應該工作。
對於 Ubuntu 14 版本有用的是特殊插件:
https://wiki.jenkins-ci.org/display/JENKINS/Startup+Trigger - 在 jenkins 啟動時開始工作
https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin - 運行系統 Groovy 腳本
我做了一份工作,從 Jenkins 重啟開始並設置參數。
並添加了系統 Groovy 腳本來設置參數。 System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox; img-src 'self';")
在CentOS 上,以下解決方案(在另一個答案的評論中建議)是唯一對我有用的解決方案:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;")
我的特殊問題是 Serenity BDD 報告中缺少圖像/css。 執行這些步驟后,我的 Serenity 報告已正確呈現所有圖像/CSS,包括在此更改之前執行的構建報告。 此解決方案也適用於任何已發布的基於 html 的報告。
去
管理 Jenkins --> 腳本控制台
並輸入以下命令:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
然后按運行。 如果輸出為“結果”,則重新運行構建檢查 HTML 報告格式
為了設置永久創建一個 Groovy 腳本文件$JENKINS_HOME/init.groovy ,或目錄$JENKINS_HOME/init.groovy.d/中的任何.groovy文件,其內容如下:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-scripts; default-src 'self'; img-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline';")
systemctl 重啟詹金斯
https://wiki.jenkins.io/display/JENKINS/Post-initialization+script
打開 jenkins.xml 文件並復制如下參數。 它將永久修復。 完成后重新啟動您的機器。
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox allow-scripts; default-src 'self'; style-src 'self' 'unsafe-inline';" -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments
現在回復為時已晚,但想分享。
我正在努力與部署在 Tomcat 上的 Jenkins 做斗爭,嘗試執行腳本,如果重新啟動 tomcat,它會有所幫助,但它會消失。
通過在 tomcat 中設置 catalina.properties 中的屬性進行永久修復。
屬性文件:tomcat_installation_dir/conf/catalina.properties 最后復制粘貼下面這行在 catalina.properties 中(你可以在任何地方設置它只是為了不干擾現有的屬性)
-Dhudson.model.DirectoryBrowserSupport.CSP=""
如果使用Jenkins-X ,要永久設置系統屬性,然后在當前目錄中創建文件myvalues.yaml
,內容如下:
jenkins:
Master:
JavaOpts: >
-Dhudson.model.DirectoryBrowserSupport.CSP=
然后重啟jenkins-x平台,升級即可:
$ jx upgrade platform --always-upgrade
# Presumably jx.exe is used if on Windows (not tested)
為了避免實際升級平台,只需將其強制升級到相同版本:
$ version=$(jx version --no-version-check\
| grep 'jenkins x platform' | sed -e 's/^jenkins.\+ //')
$ jx upgrade platform --version ${version} --always-upgrade
將 HTTPS 添加到我的 jenkins 后,我遇到了同樣的問題。 如果您遇到同樣的問題,解決方案很簡單 - 將您的 Jenkins url 設置為使用 HTTPS 協議而不是 HTTP。 可以通過 jenkins configuration -> jenkins url 進行配置
對於那些使用asciidoctor-maven-plugin
插件從 asciidoc 文件生成 HTML 文檔以進一步發布到 Jenkins 的人,更新插件配置,添加linkcss
屬性:
<configuration>
<attributes>
<linkcss>true</linkcss>
</attributes>
<backend>html5</backend>
<outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
</configuration>
我們有一個更簡單的解決方案。 除非你真的堅持使用 HTML 報告,否則你可以只使用警告 NG 插件(無論如何這是一個好主意):
https://github.com/jenkinsci/warnings-ng-plugin/blob/master/SUPPORTED-FORMATS.md
我們將它用於 CodeNarc (Groovy),但也用於 Checkstyle、PMD、SpotBugs 和 Java 警告 (Java)。
我知道這很舊,但這對我來說非常有用,這似乎是 Jenkins 文檔中推薦的。 我只是將資源根設置為從同一位置提供的不同 url。
“強烈建議設置資源根 URL,而不是自定義 Content-Security-Policy。下面的大部分文檔都是在首次引入 Content-Security-Policy 時編寫的,並保留以供無法設置 Jenkins 的管理員使用提供來自不同域的用戶內容。”
在 MacOS 中,Jenkins 運行一個服務,該服務需要在$JENKINS_HOME/init.groovy.d中創建一個 groovy 腳本
調用startup-properties.groovy和代碼:
import jenkins.model.Jenkins import java.util.logging.LogManager /* Jenkins 主目錄/ def jenkinsHome = Jenkins.instance.getRootDir().absolutePath def logger = LogManager.getLogManager().getLogger("") /替換密鑰和要設置的值的值。 // System.setProperty(key, value) */ System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "") logger.info("Jenkins啟動腳本:成功更新hudson.model.DirectoryBrowserSupport的系統屬性值.CSP . 腳本位置:${jenkinsHome}/init.groovy.d")
重啟 Jenkins 服務: brew services restart jenkins-lts
重新構建作業並將HTML 報告驗證到構建中
在Debian/Ubuntu 上,在aptitude 安裝中:
sudo vi /etc/default/jenkins
-Dhudson.model.DirectoryBrowserSupport.CSP=
添加到JAVA_ARGS
(例如JAVA_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP="
)service jenkins restart
這對我來說已經足夠了,但有關參數的完整列表,請參閱此答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.