web-dev-qa-db-ja.com

修正方法「テストレポートは見つかりましたが、新しいものはありません。テストは実行されましたか?」ジェンキンスで

「テストレポートは見つかりましたが、新しいものはありません。テストは実行されましたか?」というエラーが表示されます。ユニットテストの結果をメールで送信しようとしたとき。その理由は、テストジョブからアーティファクトをそれ自体にインポートし、テスト結果を電子メールで送信する専用のJenkinsジョブがあるためです。私がこれをしている理由は、ジェンキンスが夜中にすべての開発者の電子メールを送信したくないからです:).

ただし、「電子メールでテスト結果を送信」ジョブが実行されるまでに、テストは数時間前に行われ、質問のタイトルで指定されているエラーが表示されます。この問題を回避する方法についてのアイデアはありますか?

33
user1340582

ビルドステップ(「シェルスクリプトの実行」)としてテストレポートのタイムスタンプを更新してみてください。例えば。

cd path/to/test/reports
touch *.xml
57
Armand

最終変更日を更新することは、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/

6
Moritz

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'
        }
    }
}
4
phedoreanu

実行cd path/to/test/reports touch * .xml

私にはうまくいきませんが、次のコマンドを実行してください:

mvn clean testコンソール経由またはジェンキン経由。

これにより、新しいテストレポートが生成されます。

3
alansastre

繰り返し実行するジョブにも同じ問題がありました(30分ごと)。

ジョブの場合は、[構成]、[ビルド]、[詳細]に移動し、[スイッチ]セクションで次を追加します。--stacktrace --continue --rerun-tasks

2
JayKay

jenkinsでジョブを設定するときに、「Pre Steps」セクションに次のシェルコマンドを追加できます

mvn clean test

これはテストをきれいにします

0
Ming M Zheng

私にとっては、chmod -R 775 test-results.xmltouch test-results.xmlなどのコマンドは、許可エラーのため機能しません。回避策として、テストレポート設定で新しいファイルを設定し、コマンドを使用して古いxmlレポートファイルを新しいファイルにコピーします。

enter image description here

0
Cherry

windowsスレーブを使用する場合、Powershellでgroovyパイプラインステージを使用して結果に「タッチ」できます。

powershell 'ls "junitreports\\*.*" | foreach-object { $_.LastWriteTime = Get-Date }'
0
mKD

「target/surefire-reports/*。xml」など、jenkinsの設定で「テストレポートXML」に対して正しいパスを指定していることを確認してください。jenkinsはテストを実行しても文句を言わないので、*。xmlに触れる必要はありません。結果xmlファイルは変更されません。

0
Vijay Hajare

私にとっての解決策は削除node_modulesおよびjenkinsのnodeバージョンを(7.1から8.4に)変更します。それでおしまい。

0
Vinicius Lima

その実行でそのジョブによって変更されていないテストレポートを使用している場合に発生します。

テスト目的の場合、既に作成されたファイルでテストしている場合は、ビルド>シェルの実行の下のjenkinsジョブ内に以下のコマンドを追加します

chmod -R 775 /root/.jenkins/workspace/JmeterTest/output.xml

echo " " >> /root/.jenkins/workspace/JmeterTest/output.xml

上記のコマンドはファイルのタイムスタンプを変更するため、エラーは表示されません。

注:上記の代わりにシェルの実行を実現するには、move mvコマンドなどを使用してファイル名を変更しないでください。動作しません。変更ファイルのタイムスタンプに対してのみ追加と削除が機能します。

0
sudhir tataraju