存在:プラグインをチェックすることは、私は非常に簡単である、私のパイプラインのたるみ通知プラグインを使用したいジェンキンスパイプライン(グルーヴィー)内
slackSend color: 'danger', message: 'Everything broke'
しかし、私はビルドがあれば壊したくはありませんslackSendは存在しません。それを最初に確認する方法はありますか?
存在:プラグインをチェックすることは、私は非常に簡単である、私のパイプラインのたるみ通知プラグインを使用したいジェンキンスパイプライン(グルーヴィー)内
slackSend color: 'danger', message: 'Everything broke'
しかし、私はビルドがあれば壊したくはありませんslackSendは存在しません。それを最初に確認する方法はありますか?
あなたは、私はジェンキンスは、スクリプトにコンテンツを追加しますかどうかはわかりませんが、条件付きでそれをラップすることができるかもしれない...
if(this.respondsTo('slackSend')) {
slackSend color: 'danger', message: 'Everything broke'
}
あなたは常に確認するために、古いのtry/catchを使用することができますビルドは、この段階で失敗しない:
def resultBefore = currentBuild.result
try {
slackSend color: 'danger', message: 'Everything broke'
} catch(err) {
currentBuild.result = resultBefore
}
slackSend
コマンドが存在しないだろう、なぜしかし、私は実際に表示されないのですか?それは失敗する可能性があります(たとえば、スラックサーバーがダウンしている場合)。ただし、Slack Notification Plugin
がインストールされている場合は、存在する必要があります。
であるのかどうかはわかります。それは移植性の詳細です。それはJenkinsマシン上にありますが、それがメインのエンジニアリングマシンに移動すると、そのマシンが存在するかどうか(自分のことが起こっているかどうか)心配する必要はありません。私はこのアプローチを試みましたが、うまくいかないようです。また、壊れたビルドについて報告している場合は、ビルドステータスを変更したくありません。 :) – DanielM
私は存在しなかったことを知っていた関数を使用する前にビルド結果を記録して、キャッチでそれを設定しようとしました。残念ながら、これはまだ 'このDSLメソッドはありません 'thisFunctionNoExists'がステップ間で見つかりました。 – DanielM
上記のコードを単純なパイプラインでテストしたところ、完全に動作します!あなたは正しい、以前のビルド結果を元に戻す必要がある、私はそれに応じて私の投稿を編集 – Pom12
残念なことに、Jenkinsは「ScriptsはstaticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods respondsTo java.lang.Object java.lang.String'を使用することを許可されていません。他の人が使っている 'currentBuild.rawBuild'を含め、他の人が使うことができるようなものがたくさんあるので、私のパイプラインが正しく設定されているかわかりません。 – DanielM
本当にあなたが 'respondsTo'を確認するべき' this'オブジェクトが –