2013-01-09 15 views
6

Ich muss einen Webservice-Client schreiben und es von Jenkins anrufen. Im Folgenden sind meine Fragen:Webservice Anruf von Jenkins

  • Wie ist der beste Weg, um einen Web-Service von Jenkins anrufen? Ist ein Standard-Plug-in verfügbar? Ich muss XML-Daten als Eingabe für den Web-Service übergeben.
  • Wenn das Plug-in nicht die Option ist, können Sie mir bitte mitteilen, welche anderen Möglichkeiten wir dies erreichen können (ANT + JAVA usw.)?
  • Wenn Sie einen Beispielcode haben, wäre das großartig.

Dank Aravind

+2

ich glauben Antwort kann hilfreich sein. http://stackoverflow.com/questions/8303365/how-to-call-a-web-service-from-ant-script-or-from-withinjenkins – WillieT

Antwort

3

Es wäre toll, zu wissen, müssen Sie nur noch Ihre Kunden als Teil eines komplexen Strömungs nennen, als Job Jenkins implementiert, oder Sie wollen auf Webservice-Tests konzentrieren.

WillieT hat Sie auf einige einfache Rezepte hingewiesen, mit denen einige grundlegende Aufgaben gelöst werden können. Wenn Sie mehr Leistung, bessere Berichterstattung benötigen, einige zusätzliche Funktionen, beachten Sie bitte die folgenden Schritte aus:

Apache JMeter (details)

JMeter kann in Jenkins mitintegriert werden. Bericht Beispiel:

enter image description here

Grinder (details)

Ich ziehe dieses Tool zu verwenden, aber es könnte für Sie zu komplex/schwer sein.

Grinder kann in Jenkins mit Grinder plugin integriert werden. Bericht Beispiel:

enter image description here

+0

Danke Renat und Willie. Mein Hauptproblem besteht darin, den Webdienst von Jenkins anzurufen, nicht die Leistung. Ich sah den Post von Willie. Aber ich muss eine komplexe Eingabe XML-Daten als Eingabe für den Web-Service von Jenkins übergeben. Brauchen Sie Hilfe beim Erstellen von XML-Daten aus Variablen und übergeben Sie sie als Eingabe an den Web-Service. – user1961768

+1

JMeter bietet eine ziemlich einfache Möglichkeit, dies zu tun, aber Sie können stattdessen reine Shell-Lösung verwenden. Mit CURL können Sie eine Anfrage mit allen erforderlichen Daten senden. Es sieht wie folgt aus: curl -X POST -H 'Inhaltstyp: text/xml' -d "Einige $ {JOB_NAME} -String" "http: // ..." Bitte beachten Sie $ {JOB_NAME} in einem solchen So können Sie alle erforderlichen Parameter angeben. Wenn Sie eine noch komplexere XML-Generierung benötigen, erstellen Sie ein Shell-Skript und verwenden Sie bash, um XML zu generieren (Sie können einige Tricks verwenden, wie Vorlagen - http://StackOverflow.com/a/14032753/1435741). –

+0

Danke Renat. Ich schätze deine Zeit. – user1961768

0

Wenn Sie ein Plugin entwickeln, z.B. hudson.tasks.Builder erstreckt, folgende in pom.xml für JAX-RS-Client:

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

Eine Probe JAX-RS-Client:

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

wo http://localhost:8090/rest ist die URL Basis Rest außerhalb Jenkins-Umgebung.Überall in Ihrem Plugin-Code, können Sie diese einfachen Anruf kann je nach Bedarf:

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

übernehmen die volle Rest Web-Service-URL ist

http://localhost:8090/rest/project_type  

Sie auch Apache HttpClient verwenden oder OkHttp