2016-08-23 3 views

答えて

1

あなたは、私はジェンキンスは、スクリプトにコンテンツを追加しますかどうかはわかりませんが、条件付きでそれをラップすることができるかもしれない...

if(this.respondsTo('slackSend')) { 
    slackSend color: 'danger', message: 'Everything broke' 
} 
+0

残念なことに、Jenkinsは「ScriptsはstaticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods respondsTo java.lang.Object java.lang.String'を使用することを許可されていません。他の人が使っている 'currentBuild.rawBuild'を含め、他の人が使うことができるようなものがたくさんあるので、私のパイプラインが正しく設定されているかわかりません。 – DanielM

+0

本当にあなたが 'respondsTo'を確認するべき' this'オブジェクトが –

1

あなたは常に確認するために、古いのtry/catchを使用することができますビルドは、この段階で失敗しない:

def resultBefore = currentBuild.result 
try { 
    slackSend color: 'danger', message: 'Everything broke' 
} catch(err) { 
    currentBuild.result = resultBefore 
} 

slackSendコマンドが存在しないだろう、なぜしかし、私は実際に表示されないのですか?それは失敗する可能性があります(たとえば、スラックサーバーがダウンしている場合)。ただし、Slack Notification Pluginがインストールされている場合は、存在する必要があります。

+1

であるのかどうかはわかります。それは移植性の詳細です。それはJenkinsマシン上にありますが、それがメインのエンジニアリングマシンに移動すると、そのマシンが存在するかどうか(自分のことが起こっているかどうか)心配する必要はありません。私はこのアプローチを試みましたが、うまくいかないようです。また、壊れたビルドについて報告している場合は、ビルドステータスを変更したくありません。 :) – DanielM

+0

私は存在しなかったことを知っていた関数を使用する前にビルド結果を記録して、キャッチでそれを設定しようとしました。残念ながら、これはまだ 'このDSLメソッドはありません 'thisFunctionNoExists'がステップ間で見つかりました。 – DanielM

+0

上記のコードを単純なパイプラインでテストしたところ、完全に動作します!あなたは正しい、以前のビルド結果を元に戻す必要がある、私はそれに応じて私の投稿を編集 – Pom12

関連する問題