2017-09-20 18 views
0

私は仕事DSLグルーヴィーなスクリプトの完全な、典型的なシードジョブなどのGitリポジトリ持っていた場合:Jenkins Job DSLシードジョブで例外を処理する方法は?

job('seed') { 
    //... scm, triggers etc. 
    steps { 
     dsl { 
      external 'jobs/**/*.groovy' 
     } 
    } 
    //... more config etc. 
} 

ジョブDSLスクリプトのちょうど1が何らかの理由で例外をスローした場合、たとえば、何が起こるか:

job('deliberate-fail') { 
    throw new Exception("Arrrgggghhh") 
} 

シードジョブでこの例外を処理することは可能ですか、シードジョブ全体が失敗しますか?

1が、すべてがうまくいく場合 - それは、シードの仕事ではなくFAILUREよりUNSTABLE結果を記録することは可能でしょうか?

悪いリンゴが束を台無しにしたくない

+1

シンプルな 'try-catch'ブロックでラップしようとしましたか? – Opal

+0

これは有望ですね。特定の仕事の中にいますか?私はGroovyとJob DSLにはかなり新しくなっているので、可能なことはまだ解決していないと思っています。私が例外をキャッチしたら、ビルドをどのように不安定にするのでしょうか? –

+1

私は通常、それを特定の仕事に入れます。 'currentBuild.result = 'UNSTABLE''を使用すると仕事をするべきです.. – Opal

答えて

0

オパールが試しにキャッチを使用するという提案に基づいて、私は例外をキャプチャしてコンソールにエラーを出力するようにジョブを変更しました。

job('deliberate-fail') { 
    try { 
     throw new Exception("Arrrgggghhh") 
    } catch (Exception ex){ 
     println("deliberate-fail job is [UNSTABLE]") 
    } 
} 

私は現在Job DSL plugin(とないジェンキンスパイプラインスクリプト)を使用していたように、私は「currentBuild.result = 『UNSTABLE』」を使用するためにオパールの提案は私に利用可能であったとは思いません。ちょっと掘り下げた後、私はText-Finder pluginを使って "[UNSTABLE]"エラーをコンソールで検索し、それに応じてシードジョブの状態を変更することができました。

job('seed-job') { 
    steps { 
     dsl { 
      external '**/*_jobdsl.groovy' 
     } 
    } 
    publishers { 
     textFinder(/[UNSTABLE]/, '', true, false, true) 
    }  
} 

少し複雑ですが、動作するようです!

関連する問題