Ведение HTTP-сеанса в конвейере Jenkins.
Я хочу использовать ALM REST API внутри конвейера Jenkins. Чтобы использовать этот API, мне нужно выполнить следующие шаги:
- аутентификация + вход (сессионный cookie создан)
- получить то, что мне нужно
- выход
Мне также нужно поддерживать сеанс:
Несмотря на то, что приложения 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}",
Надеюсь это поможет.