Attualmente stiamo attivando i lavori Jenkins da uno script Python con l'aiuto di PycURL. Vorremmo, tuttavia, sbarazzarci della dipendenza da PycURL, ma finora abbiamo avuto scarso successo. Ciò che rende il nostro scenario più complicato è che dobbiamo pubblicare un file come parametro. La nostra logica pycurl corrente per l'invio della richiesta appare come segue:Come attivare il lavoro Jenkins autenticato con parametro file usando la libreria standard Python
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())
Come possiamo sostituire questo con servizi di libreria standard di Python?
Abbiamo provato prima, ma abbiamo dovuto rinunciare perché non abbiamo potuto vedere come caricare i file con successo, come si può vedere dal my question on that issue.
Sembra che tu stia usando 'https'. Attenzione che 'httplib' e' urllib2' non verificano il certificato del server durante la connessione a un sito Web HTTPS (consultare la documentazione ufficiale), quindi non sarà in grado di stabilire la connessione in modo sicuro. (Puoi aggirare il problema avvolgendo la connessione 'httplib' usando il modulo' ssl'.) – Bruno
Se guardi il mio codice, vedrai che sto dicendo a cURL di ignorare il certificato HTTPS :) È un sito intranet, quindi non dovrebbe importare. – aknuds1
Perché si desidera utilizzare urllib2/httplib su pycURL? – codersofthedark