Jenkins HTML Publisherプラグインには奇妙な問題があります。Jenkinsで表示するときに、レポートに追加した派手なCSSはすべて削除されます。レポートをローカルにダウンロードすると、CSS形式が表示されます。 JenkinsにCSSを表示できる設定はありますか?
JenkinsでのHTMLパブリッシャー設定:
Jenkinsに表示されたときのレポートページ:
ローカルに表示された場合のマイレポートページ:
問題を解明しました。ここで他のユーザーと共有します。
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_OPTIONS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;\""
これは、ジェンキンスのサーバーを再起動した後でも動作します。
ディレクティブ
default-src:default-srcは、JavaScript、画像、CSS、フォントなどのコンテンツをロードするためのデフォルトポリシーです。 AJAXリクエスト、フレーム、HTML5メディア
img-src:画像の有効なソースを定義します。
ソース値
'self'-同じオリジンからのリソースのロードを許可します(同じスキーム、ホスト、ポート)。
使用法:
default-src 'self'
'unsafe-inline'-スタイル属性、onclick、スクリプトタグボディなどのインラインソース要素の使用を許可します適用されるソースのコンテキストで)およびjavascript:URI
使用法:
default-src 'unsafe-inline'
'unsafe-eval'-JavaScript eval()などの安全でない動的コード評価を許可
使用法:
default-src 'unsafe-eval'
data:-データスキームを介したリソースの読み込みを許可します(例:Base64エンコード画像)。
使用法:
img-src 'self' data:
コンテンツセキュリティポリシーの詳細を参照してください こちら
(次のソリューションはWindows用です。)
永続的な修正は、[Jenkins directory]\jenkins.xml
の行を変更することです(私にとっては、C:\Jenkins\jenkins.xml
にあります)
<executable>Java.exe</executable>
<arguments>[arguments are here]</arguments>
次の引数を空白で区切られた引数のリストに追加します。
-Dhudson.model.DirectoryBrowserSupport.CSP=
次に、Jenkinsサービスを再起動して変更を有効にします。
[Jenkinsの管理]-> [スクリプトコンソール]に移動し、以下のコマンドを実行します。
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
Vall の回答で指定されているgroovyコマンドを使用して、これを修正できます。
効果は、Jenkinsが再起動するまで有効であり、その後、再度実行する必要があります。
この問題を解決する解決策は、jenkinsが起動するたびにこれを行うジョブを構成することです。
これを行うには、 スタートアップトリガープラグイン を使用します。
インストール後、新しいジョブを作成し、Build Triggersセクションの下に新しいチェックボックスがあり、チェックする必要があります。
次に、コマンドを使用してExecute system Groovy script buildステップを追加します。
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 -System Groovyスクリプトを実行するには
そして、Jenkinsの再起動で開始し、パラメーターを設定するジョブを作成しました。
また、パラメーターを設定するシステムGroovyスクリプトを追加しました。 System.setProperty( "hudson.model.DirectoryBrowserSupport.CSP"、 "sandbox; img-src 'self';")
に行く
Jenkinsの管理->スクリプトコンソール
次のコマンドを入力します。
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
次に、実行を押します。出力を「結果」として取得したら、ビルドを再実行し、HTMLレポート形式を確認します
永続的に設定するには、Groovyスクリプトファイル$ JENKINS_HOME/init.groovy、または任意の。groovyディレクトリ内のファイル$ JENKINS_HOME/init.groovy.d /次の内容:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-scripts; default-src 'self'; img-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline';")
systemctl restart jenkins
https://wiki.jenkins.io/display/JENKINS/Post-initialization+script
応答するには遅すぎますが、共有すると考えられます。
私はTomcatにデプロイされたJenkinsに苦労し、スクリプトの実行を試みましたが、Tomcatが再起動されると消えます。
Tomcatのcatalina.propertiesでプロパティを設定することにより、永続的な修正を行いました。
プロパティファイル:Tomcat_installation_dir/conf/catalina.properties最後にcatalina.propertiesに以下の行をコピーして貼り付けます(既存のプロパティを台無しにしないために、どこでも設定できます)。
-Dhudson.model.DirectoryBrowserSupport.CSP = ""
ジェンキンにHTTPSを追加した後、同じ問題が発生しました。同じ問題が発生している場合、解決策は簡単です。JenkinsのURLをHTTPではなくHTTPSプロトコルを使用するように設定します。 jenkins設定-> jenkins urlで設定できます