2017-03-31 10 views
2

私は2つのプロジェクトのためにJenkinsパイプラインで作業しています。私は、スラックと電子メールを介してカスタマイズされた設定警告メッセージを作成しました。私のコードは私のプロジェクトや他のいくつかのプロジェクトで使用できると期待しています。だから私はそれを小さなライブラリーにして、ジェンキンスのパイプラインの仕事に乗るたびに他人に私に尋ねる必要がないようにしたいと考えています。 the docsで説明されているように、私は他の人には@Library()の共有ライブラリを使用すると考えていました。Jenkinsパイプライン共有ライブラリ対プラグイン

しかし、私のlibはslackとemailsプラグインの存在に依存しているので、これらのプラグインがインストールされていないと使用できません。

私の質問は、パイプラインで依存関係を宣言する方法はありますか?共有ライブラリか、この問題に対処するためにジェンキンスプラグインを作成する必要がありますか?

答えて

2

私が知る限り、プラグイン(またはJenkinsのバージョン)に依存関係を宣言する方法はありません。代わりに、何を行うことができますことは、プラグインのチェックを追加し、あなたのライブラリーのユーザーに適切なエラーを与えている:

if (Jenkins.getInstance().getPluginManager().getPlugin("Slack+Plugin") == null) { 
    error "This shared library function requires "Slack plugin!" 
} 

プラグインのいずれかの使用前に、共有ライブラリ・スクリプトの開始時にこれを入れてください。ただし、プラグインからクラスをインポートする必要がある場合(インポートはgroovyファイルの最初の部分であるため)、これは難しいことに注意してください。その状況では、2つのスクリプトを作成し、最初のスクリプトはチェックを行い、ユーザーが呼び出すスクリプトであり、2つ目はすべてのロジックとインポートを含み、チェックが成功すると最初のスクリプトによって呼び出されます。

+0

ええ、これまでのところ、私はこの限定された共有ライブラリアプローチで行くつもりです。始めるのは簡単ですし、他のジェンキンと対処する必要があるかもしれませんが、今から長い時間がかかるでしょう。ありがとうございました。 –

関連する問題