2017-05-17 4 views
0

テストでFAILUREまたはUNSTABLEが返ってきたら、ビルド全体をFAILUREとしてマークします。ゲンキンズをFAILUREとしてビルドする

ほとんどの場合、これを実行すれば十分だろうと思いました。ジェンキンスコンソールで、私は

Finished: FAILURE 

とパイプライン全体が赤い色でマークされて見ることができますが、私はそれの上に私のマウスを移動すると、ステータスがSUCCESSであることを言う:私はしたい

enter image description here

ステータスがFAILUREであり、SUCCESSではないという情報を得る。あなたは私のコードを確認することができます以下 :

stage('Run tests') { 
    boolean currentBuildUnstable = false 
    parallel("Test 1": { 
     def result = build job: 'test-1-job', propagate: false 
     currentBuildUnstable = currentBuildUnstable || isUnstable(result) 
    },"Test 2": { 
     def result = build job: 'test-2-job', propagate: false 
     currentBuildUnstable = currentBuildUnstable || isUnstable(result) 
    }, 
     failFast: true 
    ) 

    if(currentBuildUnstable) { 
     node('master') { 
      currentBuild.result = 'FAILURE' 
     } 
    } 
} 
+0

コードを表示してください – StephenKing

+0

なぜあなたは 'propagate:false'を渡していますか?サブジョブが失敗した場合にジョブを失敗としてマークするデフォルトの動作を無効にします。 – drewish

答えて

0

は[OK]を、私はこの問題に対処するために管理しました。私はFAILUREとして構築している段階を追加しました。私のコードは次のようになります:

boolean currentBuildUnstable = false 
stage('Run tests') { 
    parallel("Test 1": { 
     def result = build job: 'test-1-job', propagate: false 
     currentBuildUnstable = currentBuildUnstable || isUnstable(result) 
    },"Test 2": { 
     def result = build job: 'test-2-job', propagate: false 
     currentBuildUnstable = currentBuildUnstable || isUnstable(result) 
    }, 
     failFast: true 
    ) 
} 

if(currentBuildUnstable) { 
    stage('Check') { 
     node('master') { 
      currentBuild.result = 'FAILURE' 
     } 
    } 
} 

しかし、私は以前のコードが期待どおりに動作しない理由はわかりません。

0

「成功」とは、ステージが成功したと言っていて、ビルドが成功したとは言いません。ステージを強制的に失敗させたい場合は、例外を投げてください。ステージが常に成功するようにしたい場合は、エラーがあればステージのコンテンツをtry/catchで囲みます。

関連する問題