Есть ли способ вызвать параметризованные задания Jenkins, отправив JSON для параметров - без использования строки параметров запроса?

92
10

Я использую Python для запуска работы Дженкинса. Прямо сейчас я использую Python requests lib; Я запускаю работу напрямую как:

response = requests.post("https://jenkinsurl/job/myJob/buildWithParameters", auth=(user, password), verify=False)

Мне нужно отправить параметры сборки на работу. Все учебники, которые я вижу, указывают на отправку параметров в виде строки запроса на URL задания (пример - если бы я хотел отправить params 'param1' с 'val1' и 'param2' с 'val2', я бы написал следующее: )

response = requests.post("https://jenkinsurl/job/myJob/buildWithParameters?param1=val1&param2=val2", auth=(user, password), verify=False)

Проблема в том, что мне нужно отправить конфиденциальные параметры, которые я не могу предоставить в виде открытого текста как часть URL. Есть ли способ отправить параметры как часть тела сообщения? Я не могу найти синтаксис/структуру, в которой должен был бы быть json, чтобы выполнить это.

спросил(а) 2018-11-17T01:45:00+03:00 2 года назад
1
Решение
58

Я смог заставить это работать, передав параметры напрямую в опцию "data" в запросах.

Таким образом, в приведенном выше примере (для отправки параметров 'param1' со значением 'val1' и 'param2' со значением 'val2' в задание Jenkins это сработало :)

var jobParams = {'param1': 'val1', 'param2': 'val2'}
response = requests.post("https://jenkinsurl/job/myJob/buildWithParameters, data=jobParams, auth=(user, password), verify=False)

РЕДАКТИРОВАТЬ: Если вы столкнулись с этой проблемой, убедитесь, что не решили ее, отправив параметры в arg запросов 'params' - он будет работать (запускать работу с параметрами), но все, что он делает - генерирует для вас строку запроса - эти параметры/значения все равно будут добавлены в URL

ответил(а) 2018-11-17T01:52:00+03:00 2 года назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема