2013-01-09 31 views
6

से वेबसाइट सेवा कॉल मुझे एक webservice क्लाइंट लिखने और जेनकींस से कॉल करने की आवश्यकता है। नीचे मेरे प्रश्न हैं:जेनकींस

  • जेनकींस से वेब सेवा को कॉल करने का सबसे अच्छा तरीका क्या है? उपलब्ध कोई डिफ़ॉल्ट प्लग? मुझे वेब सेवा में इनपुट के रूप में एक XML डेटा पास करने की आवश्यकता है।
  • यदि प्लग इन विकल्प नहीं है, तो क्या आप कृपया मुझे बता सकते हैं कि हम इसे कैसे प्राप्त कर सकते हैं अन्य तरीकों (एएनटी + जावा आदि)?
  • यदि आपके पास कोई नमूना कोड है, तो यह बहुत अच्छा होगा।

धन्यवाद अरविंद

+2

मुझे इस पर विश्वास है जवाब सहायक हो सकता है। http://stackoverflow.com/questions/8303365/how-to-call-a-web-service-from-ant-script-or-from-within-jenkins – WillieT

उत्तर

3

यह जानना तुम सिर्फ कुछ जटिल प्रवाह के हिस्से के रूप में अपने ग्राहक कॉल करने के लिए, एक जेनकींस काम के रूप में लागू की जरूरत है, या आप वेब सेवा परीक्षण पर ध्यान केंद्रित करना चाहते हैं बहुत अच्छा होगा।

विलीट ने आपको कई सरल व्यंजनों की ओर इशारा किया है जिनका उपयोग कुछ बुनियादी कार्यों को हल करने के लिए किया जा सकता है। आप और अधिक शक्ति, बेहतर रिपोर्टिंग की जरूरत है, कुछ अतिरिक्त सुविधाएँ निम्नलिखित पर विचार करें:

अपाचे JMeter (details)

JMeterका उपयोग कर जेनकींस में एकीकृत किया जा सकता है। रिपोर्ट के उदाहरण:

enter image description here

ग्राइंडर (details)

मैं इस उपकरण का उपयोग करना पसंद करते हैं, लेकिन यह आप के लिए जटिल/भारी हो सकता है।

ग्राइंडर जेनकींस Grinder plugin का उपयोग कर में एकीकृत किया जा सकता है। रिपोर्ट के उदाहरण:

enter image description here

+0

धन्यवाद Renat और विली। मेरी बड़ी समस्या जेनकिंस से वेब सेवा को कॉल करना है, प्रदर्शन नहीं। मैंने विली द्वारा दी गई पोस्ट देखी। लेकिन, मुझे जेनकिंस से वेब सेवा में इनपुट के रूप में एक जटिल इनपुट XML डेटा पास करने की आवश्यकता है। चर से एक्सएमएल डेटा बनाने में मदद की ज़रूरत है और इसे वेब सेवा में इनपुट के रूप में पास करें। – user1961768

+1

जेएमटर वैसे भी ऐसा करने का एक आसान तरीका प्रदान करता है, लेकिन आप इसके बजाय शुद्ध खोल समाधान का उपयोग कर सकते हैं। कर्ल आपको सभी आवश्यक डेटा के साथ अनुरोध भेजने की अनुमति देता है। यह निम्न जैसा दिखेगा: curl -X POST -H 'सामग्री-प्रकार: टेक्स्ट/xml' -d "कुछ $ {JOB_NAME} स्ट्रिंग http: // ..." कृपया इस तरह के $ {JOB_NAME} को नोट करें जिस तरह से आप सभी आवश्यक पैरामीटर की आपूर्ति कर सकते हैं। यदि आपको और भी जटिल XML पीढ़ी की आवश्यकता है - एक शेल स्क्रिप्ट बनाएं और एक्सएमएल उत्पन्न करने के लिए बैश का उपयोग करें (आप टेम्पलेट्स जैसे कुछ चाल का उपयोग कर सकते हैं - http://stackoverflow.com/a/14032753/1435741)। –

+0

धन्यवाद रेनाट। मैं आपके समय की सराहना करता हूं। – user1961768

0

आप एक प्लगइन विकसित करते हैं, जैसे कि hudson.tasks.Builder फैली हुई है, JAX-आरएस ग्राहक के लिए pom.xml में निम्नलिखित शामिल हैं:

<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-आरएस ग्राहक:

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 के बाहर आधार बाकी यूआरएल है जेनकींस पर्यावरण।अपने प्लगइन कोड में कहीं भी, आप सरल कॉल यह आवश्यक के रूप में कर सकते हैं:

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

मान पूर्ण बाकी वेब सेवा यूआरएल

http://localhost:8090/rest/project_type  

तुम भी Apache HttpClient उपयोग कर सकते हैं, या OkHttp