「テストレポートは見つかりましたが、新しいものはありません。テストは実行されましたか?」というエラーが表示されます。ユニットテストの結果をメールで送信しようとしたとき。その理由は、テストジョブからアーティファクトをそれ自体にインポートし、テスト結果を電子メールで送信する専用のJenkinsジョブがあるためです。私がこれをしている理由は、ジェンキンスが夜中にすべての開発者の電子メールを送信したくないからです:).
ただし、「電子メールでテスト結果を送信」ジョブが実行されるまでに、テストは数時間前に行われ、質問のタイトルで指定されているエラーが表示されます。この問題を回避する方法についてのアイデアはありますか?
ビルドステップ(「シェルスクリプトの実行」)としてテストレポートのタイムスタンプを更新してみてください。例えば。
cd path/to/test/reports
touch *.xml
最終変更日を更新することは、gradle自体で達成することもできます:
task jenkinsTest{
inputs.files test.outputs.files
doLast{
def timestamp = System.currentTimeMillis()
test.testResultsDir.eachFile { it.lastModified = timestamp }
}
}
build.dependsOn(jenkinsTest)
ここで述べたように: http://www.practicalgradle.org/blog/2011/06/incremental-tests-with-jenkins/
Jenkinsfile(宣言的パイプライン):の更新バージョンは次のとおりです。
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'make build'
}
}
stage('Test') {
steps {
sh 'make test'
script {
def testResults = findFiles(glob: 'build/reports/**/*.xml')
for(xml in testResults) {
touch xml.getPath()
}
}
}
}
}
post {
always {
archiveArtifacts artifacts: 'build/libs/**/*.jar', fingerprint: true
junit 'build/reports/**/*.xml'
}
}
}
実行cd path/to/test/reports touch * .xml
私にはうまくいきませんが、次のコマンドを実行してください:
mvn clean testコンソール経由またはジェンキン経由。
これにより、新しいテストレポートが生成されます。
繰り返し実行するジョブにも同じ問題がありました(30分ごと)。
ジョブの場合は、[構成]、[ビルド]、[詳細]に移動し、[スイッチ]セクションで次を追加します。--stacktrace --continue --rerun-tasks
jenkinsでジョブを設定するときに、「Pre Steps」セクションに次のシェルコマンドを追加できます
mvn clean test
これはテストをきれいにします
windowsスレーブを使用する場合、Powershellでgroovyパイプラインステージを使用して結果に「タッチ」できます。
powershell 'ls "junitreports\\*.*" | foreach-object { $_.LastWriteTime = Get-Date }'
「target/surefire-reports/*。xml」など、jenkinsの設定で「テストレポートXML」に対して正しいパスを指定していることを確認してください。jenkinsはテストを実行しても文句を言わないので、*。xmlに触れる必要はありません。結果xmlファイルは変更されません。
私にとっての解決策は削除node_modules
およびjenkinsのnode
バージョンを(7.1から8.4に)変更します。それでおしまい。
その実行でそのジョブによって変更されていないテストレポートを使用している場合に発生します。
テスト目的の場合、既に作成されたファイルでテストしている場合は、ビルド>シェルの実行の下のjenkinsジョブ内に以下のコマンドを追加します
chmod -R 775 /root/.jenkins/workspace/JmeterTest/output.xml
echo " " >> /root/.jenkins/workspace/JmeterTest/output.xml
上記のコマンドはファイルのタイムスタンプを変更するため、エラーは表示されません。
注:上記の代わりにシェルの実行を実現するには、move mvコマンドなどを使用してファイル名を変更しないでください。動作しません。変更ファイルのタイムスタンプに対してのみ追加と削除が機能します。