CIの中でプロジェクトのコードの静的解析にRubycriticを使ってレポートを表示しようとしていました
実行に関してはスクリプトを用意して実行するだけなので問題なかったのですがHTMLのレポート表示で躓いたのでメモ
Rubycritic
- 静的解析ツール
- 内部的には下記を使っています
- Reek
- コード中の読みにくい、保守しづらい箇所を検出
- 設定を上書きできる(reekの設定を使用)
- flay
- コードの類似性を検出
- default設定
- flog
- コードの複雑度を計測
- default+α
- Reek
レポート表示
Publish HTML Pluginを使えばサクッとできるかと思ったけどそんなに甘くはなかったです
ビルド設定 → Publish HTML Pluginの設定で成果物のパスの設定を行いビルドの実行、楽勝やろ!と思いみてみたら
- webfontの表示がされない
- javascriptの実行が許可されていない
結果こんな感じになりました
出てきたエラーは下記
- webfont
Access to font at 'https://domain/job/project/HTML_20Report/assets/fonts/fontawesome-webfont.ttf?v=4.7.0' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
- script
Blocked script execution in 'https://domain/job/project/HTML_20Report/overview.html' because the document's frame is sandboxed and the 'allow-scripts' permission is not set.
- script
Refused to load the font '<URL>' because it violates the following Content Security Policy directive: "default-src 'none'". Note that 'font-src' was not explicitly set, so 'default-src' is used as a fallback.
調べてみたら下記の記事に行き着きました
Configuring Content Security Policy - Jenkins - Jenkins Wiki
設定変えればOKだよということなので設定を変えてみます
一時的ならスクリプトコンソールから実行できるのでスクリプトコンソールで下記コマンドを実行します
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-same-origin allow-scripts; default-src 'self'; script-src * 'unsafe-inline'; img-src *; style-src * 'unsafe-inline'; font-src *")
これで一応グラフ(hightchart)の表示までできた、、、がunsafeなものも実行するということなので注意が必要ですね
なおデフォルトは下記らしいです
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox; default-src 'none'; img-src 'self'; style-src 'self';")