Jenkins でテスト レポートを構成した後、レポートが正常に表示されない、または空白で表示されますか?
現象1:インターフェーススタイルの乱れ
- レポートを開くと、次のようにインターフェイスのスタイルが崩れます。
原因分析
- この現象の原因は
Jenkins
構成にありますCSP(Content Security Policy)
。 - これは、ユーザーが悪意のあるファイルによる攻撃を
Jenkins
防ぐために、デフォルトで非常に厳格な権限セットに設定されているセキュリティ ポリシーです。Jenkins
workspace、/userContent、archived artifacts
HTML/JS
- デフォルトでは、この権限セットは次のように設定されています。
sandbox; default-src 'none'; img-src 'self'; style-src 'self';
- デフォルトでは、ロードのみが許可されます。
Jenkins服务器上托管的CSS文件
Jenkins服务器上托管的图片文件
- 現時点では、以下のコンテンツは禁止されます。
JavaScript
plugins (object/embed)
HTML中的内联样式表(Inline style sheets),以及引用的外站CSS文件
HTML中的内联图片(Inline image definitions),以及外站引用的图片文件
frames
web fonts
XHR/AJAX
etc.
一時的な戦略
- と入力し
Manage Jenkins->Script console
、次のコマンドを入力して実行します。
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
- 次のように:
- コマンドを入力して実行した後、コマンドが空の場合は、次のように構成が完了したことを意味します。
- 再度ビルドすると、次のようにインターフェイス スタイルに [OK] が表示されます。
- 上記の操作は以前のビルドで生成されたレポートに対して有効であり
HTML
、一時的にのみ有効であり、再起動するJenkins
とContent Security Policy
デフォルト値に戻り、HTML
スタイルは表示されなくなります。
恒久的な戦略
Groovy
次のようにプラグインをインストールします。
- プロジェクト - 構成 - に移動します
Execute Groovy script
。
- 次の内容を入力して保存します。
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
現象2:レポートパスが存在しない
- たとえば、ビルド時に、レポート パスが存在しないため手動で作成する必要があるというメッセージが表示され、次のようなエラー メッセージが表示されます。
Jenkins - HTML Publisher Plugin build fails with report directory doesnot exist
原因分析
- 設定したレポート ディレクトリがリモート ウェアハウスのプロジェクト ディレクトリに存在しません。
- 設定したレポート ディレクトリが、ウェアハウスに保存されているレポート パスと矛盾しています。
ソリューション戦略
- Jenkins 上でレポートを保存するディレクトリを設定します。プロジェクトのルート ディレクトリ下のディレクトリは次のとおりです
reports
。
- 次に、ウェアハウス内のプロジェクトのディレクトリの下に同じディレクトリがあるかどうかを確認します。
- 上記のように、私の倉庫にはレポートがあるため、この 2 つは、「はい」
report
または「両方」のいずれかで一貫している必要がありますreports
。 - 最後に、
jenkins
コンテナ内のプロジェクト ディレクトリが正常にダウンロードまたは同期されたかどうかを確認します。jenkins
次のコマンドを使用して、コンテナーに入って表示できます。
sudo docker exec -it jenkins bash
ls /var/jenkins_home/workspace/test_autoui -ls
# /var/jenkins_home/workspace/:这是jenkins容器上项目的工作空间
# test_autoui:这是我的项目名称,改为自己的即可
- 上記から、
report
ディレクトリが存在し、その中にあるレポートが表示されることがわかります。
- コンソール情報はビルド中にすでにプロンプトを表示しているため、上記の点に一貫性があることを確認することによってのみ、レポートが正常に表示されます。コンソール情報は、特定のディレクトリからゼロワン ディレクトリにコピーされます。
現象 3: Docker とオペレーティング システムのバージョンが一致しない
- 上記 2 つの現象は解決されましたが、依然としてレポートが表示されず、レポート ページのデータが直接空白で表示されます。
原因分析
- ビルド中にコンソールに出力されるエラー メッセージを表示します。
- つまり、エラー メッセージは次のとおりです。
lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by docker)
- これは、docker のバージョンとオペレーティング システムのバージョンが一致していないためです。
docker:最新版本
Ubuntu:22.04
- 磁気情報を参照の上、
Ubuntu:22.04
問題により必要に応じて使用することが可能ですUbuntu18.04、Ubuntu20.04
。
ソリューション戦略
- を使用するなどして、システムを再インストールします
Ubuntu18.04、Ubuntu20.04
。