2013-01-09 10 views
6

Webサービスクライアントを作成し、Jenkinsから呼び出す必要があります。以下は私の質問です:JenkinsからのWebサービスコール

  • ジェンキンスからウェブサービスを呼び出す最良の方法は何ですか?デフォルトのプラグインはありますか? XMLデータをWebサービスへの入力として渡す必要があります。
  • プラグインがオプションでない場合は、これを実現する他の方法(ANT + JAVAなど)を教えてください。
  • サンプルコードがある場合は、それが素晴らしいでしょう。

おかげ Aravind

+2

を使用することができ

http://localhost:8090/rest/project_type 

であると仮定答えが役に立つかもしれません。 http://stackoverflow.com/questions/8303365/how-to-call-a-web-service-from-ant-script-or-from-within-jenkins – WillieT

答えて

3

あなただけでジェンキンスジョブとして実装され、いくつかの複雑な流れの一環として、あなたのクライアントを呼び出す必要がある、またはあなたがWebサービスのテストに集中したい知っている素晴らしいことです。

WillieTはいくつかの基本的なタスクを解決するために使用できるいくつかの簡単なレシピを指摘しています。あなたはより多くの電力、より良い報告が必要な場合は、いくつかの追加機能には、以下の点を考慮してください。

のApache JMeterのdetails

のJMeterを使用してJenkinsに統合することができます。報告書の例:

enter image description here

グラインダーdetails

私は、このツールを使用することを好むが、それはあなたのために/複雑な重いのかもしれません。

グラインダーはGrinder pluginを用いジェンキンスに組み込むことができます。報告書の例:

enter image description here

+0

Thanks Renat and Willie。私の大きな問題は、パフォーマンスではなく、JenkinsからWebサービスを呼び出すことです。私はウィリーによって与えられた投稿を見た。しかし、複雑な入力XMLデータをJenkinsのWebサービスへの入力として渡す必要があります。変数からXMLデータを作成し、それをWebサービスへの入力として渡す際に助けが必要です。 – user1961768

+1

JMeterは、とにかく簡単に行うことができますが、代わりに純粋なシェルソリューションを使用することができます。 CURLを使用すると、必要なすべてのデータを要求に送信できます。 curl -X POST -H 'Content-type:text/xml' -d "$ {JOB_NAME}"の文字列 "http:// ..."このような$ {JOB_NAME}に注意してください。必要なすべてのパラメータを提供することができます。さらに複雑なXML生成が必要な場合は、シェルスクリプトを作成し、bashを使用してXMLを生成します(テンプレートのようないくつかのトリックを使用できます。http://stackoverflow.com/a/14032753/1435741)。 –

+0

ありがとうございました。私はあなたの時間を感謝します。 – user1961768

0

あなたがプラグインを開発する場合、例えば

<dependency> 
     <groupId>javax.ws.rs</groupId> 
     <artifactId>javax.ws.rs-api</artifactId> 
     <version>2.0.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-client</artifactId> 
     <version>2.25.1</version> 
    </dependency> 

サンプルJAX-RSクライアント:

import javax.ws.rs.client.Client; 
import javax.ws.rs.client.ClientBuilder; 
import javax.ws.rs.client.WebTarget; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.UriBuilder; 
import org.glassfish.jersey.client.ClientConfig; 

public class RestClient { 

    private static String BASE_URL = "http://localhost:8090/rest"; 
    private static String ACCESS_TOKEN = "8900***bc1"; 

    public static String query(String path) { 

     ClientConfig config = new ClientConfig(); 
     Client client = ClientBuilder.newClient(config); 
     WebTarget target = client.target(getBaseURI()); 

     // token authentication 
     String result = target.path(path).request().header("Authorization", "Token " + ACCESS_TOKEN) 
      .accept(MediaType.APPLICATION_JSON).get(String.class); 
     return result; 
    } 

    private static URI getBaseURI() { 
     return UriBuilder.fromUri(BASE_URL).build(); 
    } 
} 

http://localhost:8090/restが外ベース残りのURLであるhudson.tasks.Builderは、JAX-RSクライアント用のpom.xmlに以下が含まれる、延びていますJenkins環境。必要に応じてどこでもあなたのプラグインのコードでは、次のことができ、簡単なコールこの:

String rsData = RestClient.query("/project_type"); 

がフルREST WebサービスのURLは、また、私はこれを信じるApache HttpClient、またはOkHttp

関連する問題