Wie trigger authentifiziert Jenkins job mit Datei-parameter mit standard-Python-Bibliothek

Sind wir derzeit Auslösung Jenkins-jobs aus einem Python-Skript mit Hilfe von PycURL. Wir möchten jedoch, um loszuwerden, das PycURL Abhängigkeit, haben aber wenig Erfolg gehabt bisher. Was macht unser Szenario komplizierter ist, die wir brauchen, um die post eine Datei als parameter. Unsere aktuellen PycURL Logik für die Buchung der Anfrage sieht wie folgt aus:

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())

Wie ersetzen wir diese mit den Funktionen von der standard Python Bibliothek?

Wir haben vorher versucht, musste aber aufgeben, da wir nicht sehen konnte, wie Sie Dateien hochladen erfolgreich, wie man sehen kann aus meine Frage zu diesem Thema.

  • Sie scheinen mit https. Beachten Sie, dass httplib und urllib2 nicht, überprüfen Sie das server-Zertifikat bei der Verbindung um eine HTTPS-website (siehe offizielle Dokumentation), so wird es nicht in der Lage sein, um die Verbindung herzustellen sicher. (Sie können umgehen dies, indem er die httplib Verbindung mit der ssl Modul.)
  • Wenn Sie einen Blick auf meinen code, werden Sie sehen, dass ich sage cURL zu ignorieren HTTPS-Zertifikat 🙂 Es ist eine intranet-Website, also sollte es nicht egal.
  • Warum Sie verwenden möchten, urllib2/httplib über pycURL?
  • Da pycURL ist eine Abhängigkeit würde ich eher vermeiden.
  • pycURL basiert auf libcurl (Reine C-code), die nachweislich bessere performance und Stabilität über das urllib und httplib. Darüber hinaus ist jeder linux-Rechner kommt mit cURL, während pycURL ist nur eine einzige api-code zu locken.
  • Es ist immer noch eine (zu) schwere Abhängigkeit
  • zu schwer? wie? Kann u aufwendigen ur Beobachtung? Ich m der neue admin von pycURL und sicherstellen können, eine Lösung in der nächsten Version planen wir für nächsten Monat.. .
  • Wir haben zu bauen/installieren, und cURL manuell über Windows
  • hw abt eine exe-Datei ? one-Klick-installation fr windows?
  • Das wäre definitiv eine Verbesserung. Ich denke, die automatische installation durch EasyInstall wäre nicht machbar (wegen der libcurl-Abhängigkeit)?
  • lemme diskutieren, wenn wir können, zählen libcurl mit pycurl in einem Paket.. .
  • alle updates? Können Sie post-Codes (vielleicht, was Sie hatte, in dieser anderen Frage)?
  • Siehe meine Antwort, das ist das beste, das ich kommen konnte mit.

InformationsquelleAutor aknuds1 | 2011-12-05
Schreibe einen Kommentar