0

単体テストの失敗は、Jenkins によって報告されていません。ビルドログには次のように表示されます。

[JENKINS] Recording test results
hudson.AbortException: Test reports were found but none of them are new. Did tests run? 
For example, /home/tomcat/.jenkins/jobs/ws-main-gerrit/workspace/commons/commons-utils/target/surefire-reports/TEST-commons.utils.TransformationUtilsTest.xml is 32 min old

問題は、Jenkins ビルドが Gerrit によってトリガーされると、正しくない (30 分前の) タイムスタンプでターゲット ディレクトリが作成されることです。Jenkins と Gerrit が存在するサーバーの時刻は正確です。ログインして Maven ビルドを手動で実行すると、単体テストの失敗が正しく報告されます。

問題を引き起こす可能性のあるアイデアはありますか?
前もって感謝します!

4

2 に答える 2

2

問題は、Jenkins が常駐する NFS が NTP を使用していないこと (そして約 30 分遅れていた) であり、システムの残りの部分が使用していました。そのため、date コマンドは正しいタイムスタンプを返しましたが、ターゲット ディレクトリ内のファイルは間違ったタイムスタンプで作成されました。

于 2012-06-18T21:11:17.007 に答える
0

この回答は問題の特定に役立ちましたが、代わりに回避策を実装することにしました。

Jenkins スレーブでこの複合コマンドを実行して、スレーブとワークスペースに使用していた NFS マウントとの間に不一致があることを特定しました。

$ date ; touch this ; ls -l this
Mon Nov 11 10:57:55 CST 2013
rw-rr- 1 davidg devtools 0 Nov 11 10:56 this

別の VM / NFS マウントで同じコマンドを試しましたが、同じ不一致がありました。これはデータセンター全体の問題であり、すぐに修正するのは難しすぎる可能性があると推測したため、「-t」オプションを使用して touch コマンドでファイルの変更タイムスタンプを手動で更新することで問題を回避することにしました。

「シェルの実行」ビルドステップに以下を追加したところ、Jenkins は公開する現在のテスト結果があることに最終的に満足しました。

#!/bin/bash
echo $(hostname)
echo "Touching test results so that the Publish JUnit test result plugin always finds  new results..."
touch -m -t $(date "+%Y%m%d%H%M.%S") ${WORKSPACE}/myjob/target/surefire-reports/*.xml
于 2013-11-11T17:17:55.890 に答える