Услуга Webservice от Дженкинса

Мне нужно написать клиент webservice и позвонить ему из Jenkins. Ниже приведены мои вопросы:

  • Каков наилучший способ вызвать веб-сервис от Jenkins? Доступна ли какая-либо стандартная версия? Мне нужно передать данные xml в качестве входных данных в веб-службу.
  • Если подключаемый модуль не является опцией, можете ли вы сообщить мне, каковы другие способы достижения этого (ANT + JAVA и т. д.)?
  • Если у вас есть образец кода, это будет здорово.

благодаря Аравиндом

6
nl ja de
Я считаю, что этот ответ может быть полезным. stackoverflow.com/questions/8303365/…
добавлено автор WillieT, источник

2 ответы

Было бы здорово знать, что вам просто нужно позвонить своему клиенту как часть некоторого сложного потока, реализованного как работа Дженкинса, или вы хотите сосредоточиться на тестировании webservice.

WillieT указал вам на несколько простых рецептов, которые могут быть использованы для решения некоторых основных задач. Если вам нужно больше энергии, лучше отчетность, некоторые дополнительные функции, пожалуйста, рассмотрите следующее:

Apache JMeter (details)

JMeter можно интегрировать в Jenkins, используя плагин производительности . Пример отчета:

enter image description here

Grinder (details)

Я предпочитаю использовать этот инструмент, но он может быть сложным/тяжелым для вас.

Grinder может быть интегрирован в Jenkins, используя плагин Grinder . Пример отчета:

enter image description here

3
добавлено
JMeter предоставляет довольно простой способ сделать это в любом случае, но вместо этого вы можете использовать чистое решение оболочки. CURL позволяет отправлять запрос со всеми необходимыми данными. Он будет выглядеть следующим образом: curl -X POST -H 'Content-type: text/xml' -d "Some $ {JOB_NAME} string" "http://..." Обратите внимание: $ {JOB_NAME} в таком вы можете предоставить все необходимые параметры. Если вам нужна еще более сложная генерация xml - создайте сценарий оболочки и используйте bash для генерации xml (вы можете использовать некоторые трюки, например шаблоны - stackoverflow.com/a/14032753/1435741 ).
добавлено автор Renat Gilmanov, источник
Спасибо Ренату и Вилли. Моя главная проблема - позвонить в веб-сервис от Jenkins, а не на производительность. Я видел сообщение, данное Вилли. Но мне нужно передать сложные входные данные xml в качестве входных данных в веб-службу от Jenkins. Нужна помощь в формировании XML-данных из переменных и передаче его в качестве входных данных для веб-службы.
добавлено автор user1961768, источник
Спасибо Ренату. Я ценю ваше время.
добавлено автор user1961768, источник

Если вы разрабатываете плагин, например. extends hudson.tasks.Builder, включите следующее в pom.xml для JAX-RS Client:

    
        javax.ws.rs
        javax.ws.rs-api
        2.0.1
    
    
        org.glassfish.jersey.core
        jersey-client
        2.25.1
    

Образец клиента 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-адрес для отдыха вне среды Jenkins. В любом месте вашего кода плагина вы можете просто позвонить по мере необходимости:

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

предположим, что полный URL веб-сервиса для отдыха

http://localhost:8090/rest/project_type    

You may also use Apache HttpClient, or OkHttp

0
добавлено