web-dev-qa-db-ja.com

Jenkins-HTML Publisherプラグイン-Jenkins Serverでレポートを表示するときにCSSが表示されない

Jenkins HTML Publisherプラグインには奇妙な問題があります。Jenkinsで表示するときに、レポートに追加した派手なCSSはすべて削除されます。レポートをローカルにダウンロードすると、CSS形式が表示されます。 JenkinsにCSSを表示できる設定はありますか?

JenkinsでのHTMLパブリッシャー設定:

enter image description here

Jenkinsに表示されたときのレポートページ:

enter image description here

ローカルに表示された場合のマイレポートページ:

enter image description here

61
Vall

問題を解明しました。ここで他のユーザーと共有します。

Jenkinsのコンテンツセキュリティポリシーにより、CSSは削除されています。 ( https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy

デフォルトのルールは次のように設定されています。

sandbox; default-src 'none'; img-src 'self'; style-src 'self';

このルールセットの結果は次のとおりです。

  • JavaScriptは一切許可されません
  • プラグイン(オブジェクト/埋め込み)は許可されていません
  • インラインCSSまたは他のサイトからのCSSは許可されません
  • 他のサイトからの画像は許可されていません
  • 許可されていないフレーム
  • Webフォントは許可されていません
  • XHR/AJAXは許可されていませんなど。

この規則を緩和するには、

  1. Jenkinsの管理->
  2. ノードの管理->
  3. 設定(歯車アイコン)->をクリックします
  4. 左側の[スクリプトコンソール]をクリックし、次のコマンドを入力します。

    System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

実行を押します。 「結果」ヘッダーの下に「結果:」として出力が表示される場合、保護は無効になっています。ビルドを再実行すると、アーカイブされた新しいHTMLファイルでCSSが有効になっていることがわかります。

118
Vall

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-srcdefault-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:

コンテンツセキュリティポリシーの詳細を参照してください こちら

10
jithinkmatthew

(次のソリューションはWindows用です。)

永続的な修正は、[Jenkins directory]\jenkins.xmlの行を変更することです(私にとっては、C:\Jenkins\jenkins.xmlにあります)

<executable>Java.exe</executable>
<arguments>[arguments are here]</arguments>

次の引数を空白で区切られた引数のリストに追加します。

-Dhudson.model.DirectoryBrowserSupport.CSP=

次に、Jenkinsサービスを再起動して変更を有効にします。

10
twasbrillig

[Jenkinsの管理]-> [スクリプトコンソール]に移動し、以下のコマンドを実行します。

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
7
Som

Vall の回答で指定されているgroovyコマンドを使用して、これを修正できます。

効果は、Jenkinsが再起動するまで有効であり、その後、再度実行する必要があります。

この問題を解決する解決策は、jenkinsが起動するたびにこれを行うジョブを構成することです。

これを行うには、 スタートアップトリガープラグイン を使用します。

インストール後、新しいジョブを作成し、Build Triggersセクションの下に新しいチェックボックスがあり、チェックする必要があります。

次に、コマンドを使用してExecute system Groovy script buildステップを追加します。

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")

保存するとすべてが機能します。

6
dragosb

Ubuntu 14バージョンでは、特別なプラグインが役に立ちました。

https://wiki.jenkins-ci.org/display/JENKINS/Startup+Trigger -jenkinsの起動時にジョブを開始する

https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin -System Groovyスクリプトを実行するには

そして、Jenkinsの再起動で開始し、パラメーターを設定するジョブを作成しました。

set to start build after Jenkins is ran

また、パラメーターを設定するシステムGroovyスクリプトを追加しました。 Run System Groovy script System.setProperty( "hudson.model.DirectoryBrowserSupport.CSP"、 "sandbox; img-src 'self';")

5
abiab

に行く

Jenkinsの管理->スクリプトコンソール

次のコマンドを入力します。

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

次に、実行を押します。出力を「結果」として取得したら、ビルドを再実行し、HTMLレポート形式を確認します

2
Shailendra

永続的に設定するには、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

0
Karen Danielyan

応答するには遅すぎますが、共有すると考えられます。

私はTomcatにデプロイされたJenkinsに苦労し、スクリプトの実行を試みましたが、Tomcatが再起動されると消えます。

Tomcatのcatalina.propertiesでプロパティを設定することにより、永続的な修正を行いました。

プロパティファイル:Tomcat_installation_dir/conf/catalina.properties最後にcatalina.propertiesに以下の行をコピーして貼り付けます(既存のプロパティを台無しにしないために、どこでも設定できます)。

-Dhudson.model.DirectoryBrowserSupport.CSP = ""

0
Java Developer

ジェンキンにHTTPSを追加した後、同じ問題が発生しました。同じ問題が発生している場合、解決策は簡単です。JenkinsのURLをHTTPではなくHTTPSプロトコルを使用するように設定します。 jenkins設定-> jenkins urlで設定できます

0
Ben Yitzhaki