2017-08-16 16 views
1

This guy seems to have the same problemjunkinsパイプラインをxunitで停止させるにはどうすればいいですか?

stage('Test') { 
     steps { 
      bat "\"${tool 'VSTestRunner'}\" %WORKSPACE%\\MyApp\\bin\\Debug\\MyApp.dll /logger:trx & exit 0" 
      // The test publish is responsible for decided whether the test stage failed 
      step([$class : 'XUnitPublisher', 
       testTimeMargin: '3000', 
       thresholdMode: 1, 
       thresholds: [ 
        [$class: 'FailedThreshold', failureNewThreshold: '', failureThreshold: '1', unstableNewThreshold: '', unstableThreshold: ''], 
        [$class: 'SkippedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '', unstableThreshold: ''] 
       ], 
       tools : [[$class: 'MSTestJunitHudsonTestType', 
        deleteOutputFiles: true, 
        failIfNotNew: false, 
        pattern: "TestResults\\*.trx", 
        skipNoTestFiles: false, 
        stopProcessingIfError: true 
       ]] 
      ]) 

     } 
    } 

をテストが継続パイプラインを失敗した場合:ここで

は私がやっているものです。

xunit設定でパイプラインを継続するかどうかを制御できるようにしたいと考えています。これよりももっとエレガントな方法がありますか?

if (currentBuild.result.equals("FAILURE")) { 
    throw "Test results did not pass thresholds" 
} 

「stopProcessingIfError」とは何ですか?私はエラーしきい値を超えてもパイプラインを止めると思ったが、そうではなかった。それを行うxunitサービスのparamはありますか?

+0

一般に、ビルドに失敗したい場合は、終了ステータスをスローする必要があります!= 0 – OK999

+0

どのようなエラーレベルが可能ですか私?失敗、成功、不安定? – red888

答えて

1

FAILED、SUCCESS、およびUNSTABLEは、ジェンキンズのビルドステータスであり、終了ステータスではありません。終了状態は実行中のプロセスから来るべきです。したがって、テストが失敗した場合、解決策はexit 1(または何かがゼロ以外)に設定されます。あなたはバッチステップが出口0を設定しているように思えます。ウィンドウ内にあるようにERRORLEVELをチェックし、非ゼロの場合はパイプラインから「exit 1」を強制して中断します。

注: 0以外にするべきではありません。(私は終了コードで1を参照しています)

+0

これは私にはもっと意味があります。 xunitはビルドステータスを正しく設定しています。プロセスはエラーなしで終了していますので、その時点でビルドステータスを読み込み、パイプラインを失敗させるかどうかを判断することができます。 – red888

関連する問題