Ведение HTTP-сеанса в конвейере Jenkins.

Я хочу использовать ALM REST API внутри конвейера Jenkins. Чтобы использовать этот API, мне нужно выполнить следующие шаги:

  1. аутентификация + вход (сессионный cookie создан)
  2. получить то, что мне нужно
  3. выход

Мне также нужно поддерживать сеанс:

Несмотря на то, что приложения RESTful в идеале не имеют состояния, платформе ALM требуются сеансы для управления блокировками, временем жизни клиента и выполнения других основных задач.

Используя плагин HTTP-запросов, я не могу поддерживать сеанс.

У меня есть рабочее решение, использующее curl и шаг конвейера "sh", но я бы хотел сделать что-то более чистое, используя шаг из плагина /jenkins или какого-нибудь решения Groovy/ Java.

1 ответ

Я не знаю API ALM REST, но похоже, что вы хотите использовать обычный HTTP-сеанс с использованием куки, но через Jenkins' httpRequest, Похоже, это не легко поддерживается из коробки, но вы можете сделать это вручную следующим образом:

httpRequest(url: "https://the-url.com/login.php")
def cookieContent = response.headers.get("Set-Cookie")
httpRequest(
    url: "https://the-url.com/the-thing.php",
    customHeaders: [[name:"Cookie", value:cookieContent]])

Вам, вероятно, придется поиграться с соединением, чтобы увидеть, что сервер принимает и возвращает. Надеюсь, вы можете предоставить логин, используя встроенный authentication, но вам может потребоваться указать логин в теле, например:

contentType: "APPLICATION_FORM",
requestBody: "user=${env.USER}&pass=${env.PASS}",

Надеюсь это поможет.

Другие вопросы по тегам