2013-01-09 30 views
6

我需要編寫一個webservice客戶端並從Jenkins調用它。以下是我的問題:Jenkins的Webservice調用

  • 什麼是從Jenkins調用Web服務的最佳方式?任何默認插件可用?我需要將XML數據作爲輸入傳遞給Web服務。
  • 如果插件不是這個選項,你可以讓我知道我們可以做到這一點的其他方式(ANT + JAVA等)是什麼?
  • 如果您有任何示例代碼,那就太棒了。

感謝 亞拉文

+2

我相信這答案可能有幫助。 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

謝謝Renat和Willie。我的主要問題是從Jenkins調用Web服務,而不是性能。我看到了威利給出的這篇文章。但是,我需要將一個複雜的輸入XML數據作爲輸入傳遞給Jenkins的Web服務。需要幫助從變量形成XML數據並將其作爲輸入傳遞給Web服務。 – user1961768

+1

無論如何,JMeter提供了一個相當簡單的方法,但是您可以使用純shell解決方案。 CURL允許您使用所有必需的數據發送請求。它看起來像下面這樣:curl -X POST -H'Content-type:text/xml'-d「一些$ {JOB_NAME}字符串」「http:// ...」請注意$ {JOB_NAME}你可以提供所有必需的參數。如果您需要更復雜的XML生成 - 創建一個shell腳本並使用bash生成XML(您可以使用一些技巧,如模板 - http://stackoverflow.com/a/14032753/1435741)。 –

+0

謝謝Renat。我感謝你的時間。 – user1961768

0

如果你開發一個插件,例如延伸hudson.tasks.Builder,包括在pom.xml中爲JAX-RS客戶端執行以下操作:

<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是外部的基REST URL詹金斯環境。任何地方在你的插件代碼,你可以簡單的調用這個需要:

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

承擔全部REST Web服務URL是

http://localhost:8090/rest/project_type  

你也可以使用Apache HttpClient,或OkHttp