В настоящее время мы запускаем задания Jenkins из скрипта Python с помощью PycURL. Однако мы хотели бы избавиться от зависимости PycURL, но пока не добились больших успехов. Что делает наш сценарий более сложным, так это то, что нам нужно опубликовать файл в качестве параметра. Наша текущая логика PycURL для публикации запроса выглядит следующим образом:
url = "https://myjenkins/job/myjob/build"
with contextlib.closing(pycurl.Curl()) as curl:
curl.setopt(pycurl.URL, url)
curl.setopt(pycurl.USERPWD, "myuser:mypassword")
curl.setopt(pycurl.SSL_VERIFYPEER, False)
curl.setopt(pycurl.SSL_VERIFYHOST, False)
curl.setopt(pycurl.FAILONERROR, True)
data = [
("name", "integration.xml"),
("file0", (pycurl.FORM_FILE, "integration.xml")),
("json", "{'parameter': [{'name': 'integration.xml', 'file': 'file0'}]}"),
("Submit", "Build"),
]
curl.setopt(pycurl.HTTPPOST, data)
try:
curl.perform()
except pycurl.error, err:
raise JenkinsTriggerError(curl.errstr())
Как мы можем заменить это средствами из стандартной библиотеки Python?
Мы уже пытались раньше, но вынуждены были сдаться, так как не видели, как успешно загружать файлы, как вы можете видеть из мой вопрос по этому поводу.
https
. Имейте в виду, чтоhttplib
иurllib2
не проверяют сертификат сервера при подключении к веб-сайту HTTPS (см. официальную документацию), поэтому безопасно установить соединение не получится. (Вы можете обойти это, обернув соединениеhttplib
с помощью модуляssl
.) - person Bruno   schedule 05.12.2011