2017-08-15 12 views
0

初めて自分のJenkinsプラグインを開発したことがありました。プラグインの主な目的は、Google Cloud Platformにメッセージを公開することです。私がJenkinsで書いたコードはすべて、Eclipseからローカル環境で正常に動作しています。しかし、私がJenkinsで同じコードを使用しているとき、それはいくつかの依存エラーを引き起こしています。どんな助けでも本当に感謝しています。Jenkinsプラグインのしくみ

ありがとうございます。

メモ: JenkinsとEclipseは同じマシンにあります Jenkinsがどのように依存関係を解決するかは本当に私にとっては心配です。

+0

共有エラーログとpomファイル。この情報を使用すると、問題に役立つことはできません。 – Suresh

+0

エラーは次のようなものです**機能チャネルサービスプロバイダが見つかりませんでした。 – PhaniKumar

+0

com.google.cloud グーグル、クラウド型のpubsub 0.20.1ベータ COM ** grpc-okhttpまたはgrpc-ネッティーアーティファクトに依存関係を追加してみてください。 google.api GAX 1.4.0 grpc-いるProtobuf 1.4.0 io.grpc com.google.auth グーグル-AUTH-ライブラリーの資格情報 0.7.1 PhaniKumar

答えて

0

Eclipseは、Eclipseからプラグインを実行しているときに、クラスパスに依存関係を追加するためにM2eclipseプラグインを使用します。

Jenkinsはプラグイン間の依存関係のみを解決します。さらに、Jenkinsは.hpiパッケージが自己完結型であること、つまり必要なJAR依存関係をすべて含んでいることを期待しています。 mvn packageはすべての依存関係のjarファイルをコピーし、WEB-INF/libフォルダの.hpiファイルに配置する必要があります。

特定のケースでは、Google Cloud実装ではクラスパス上にチャネルサービスプロバイダが実装されていると思われるので、grpc-okhttpやgrpc-nettyに依存関係を追加して、.hpiファイルも同様です。

0

クラスローダーの問題が発生することがありますので、Googleのクラスを呼び出す前に、次のコード行を追加してください。

Thread.currentThread()。setContextClassLoader(getClass()。getClassLoader());

Jenkinsプラグインpom.xmlに次のコードを追加して、Jenkins依存関係ではなくpom.xmlの依存関係を最初にロードするようにJenkinsを指定します。

<pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.jenkins-ci.tools</groupId> 
      <artifactId>maven-hpi-plugin</artifactId> 
      **<configuration> 
      <pluginFirstClassLoader>true</pluginFirstClassLoader> 
      </configuration>** 
     </plugin> 
    </plugins> 
</pluginManagement> 
関連する問題