2013-01-09 19 views
6

Ho bisogno di scrivere un client Webservice e chiamarlo da Jenkins. Di seguito le mie domande:Chiamata al servizio Web da Jenkins

  • Qual è il modo migliore per chiamare un servizio Web da Jenkins? Qualche plug predefinito è disponibile? Devo passare un dato XML come input per il servizio web.
  • Se il plug-in non è l'opzione, per favore fatemi sapere quali sono gli altri modi in cui possiamo ottenere questo (ANT + JAVA ecc.)?
  • Se si dispone di un codice di esempio, sarebbe fantastico.

Grazie Aravind

+2

Credo che questo la risposta potrebbe essere utile. http://stackoverflow.com/questions/8303365/how-to-call-a-web-service-from-ant-script-or-from-within-jenkins – WillieT

risposta

3

Sarebbe bello sapere è sufficiente chiamare il cliente come parte di un flusso complesso, implementato come un lavoro Jenkins, o se si vuole concentrare sui test webservice.

WillieT ha indicato diverse semplici ricette che possono essere utilizzate per risolvere alcune attività di base. Se avete bisogno di più potenza, una migliore segnalazione, alcune funzionalità aggiuntive si prega di considerare quanto segue:

jmeter (details)

JMeter può essere integrato in Jenkins usando Performance plugin. Relazione esempio:

enter image description here

Grinder (details)

preferisco utilizzare questo strumento, ma potrebbe essere di complessa/pesante per te.

Grinder può essere integrato in Jenkins utilizzando Grinder plugin. Relazione esempio:

enter image description here

+0

Grazie Renat e Willie. Il mio problema principale è chiamare il servizio web di Jenkins, non la prestazione. Ho visto il post di Willie. Ma ho bisogno di passare un input XML complesso come input per il servizio web di Jenkins. Hai bisogno di aiuto per formare dati XML da variabili e passarlo come input per il servizio web. – user1961768

+1

JMeter fornisce comunque un modo abbastanza semplice per farlo, ma è possibile utilizzare la soluzione di shell pura. CURL ti consente di inviare una richiesta con tutti i dati richiesti. Apparirà come segue: curl -X POST -H 'Content-type: text/xml' -d "Alcuni $ {JOB_NAME} stringa" "http: // ..." Si prega di notare $ {JOB_NAME} in tale modo in cui puoi fornire tutti i parametri richiesti. Se hai bisogno di una generazione XML ancora più complessa - crea uno script di shell e usa bash per generare XML (puoi usare alcuni trucchi, come i modelli - http://stackoverflow.com/a/14032753/1435741). –

+0

Grazie Renat. Apprezzo il tuo tempo. – user1961768

0

Se si sviluppa un plugin, per esempio si estende hudson.tasks.Builder, includono quanto segue in pom.xml per JAX-RS Cliente:

<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> 

Un campione JAX-RS Cliente:

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(); 
    } 
} 

dove http://localhost:8090/rest è l'URL di base resto al di fuori di Ambiente Jenkins.Ovunque nel codice plugin, è possibile semplice chiamata questo in base alle esigenze:

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

assumono il resto completo servizio web url è

http://localhost:8090/rest/project_type  

Si può anche utilizzare Apache HttpClient, o OkHttp

Problemi correlati