webentwicklung-frage-antwort-db.com.de

Wie kann ich HTTP POST Anforderungen aus einem Jenkins Groovy-Skript ausführen?

Ich muss in der Lage sein, während unserer Jenkins Pipeline Builds eine einfache HTTP POST) - Anfrage zu erstellen. Ich kann jedoch kein einfaches Curl-Sh-Skript verwenden, da es unter Windows funktioniert und Linux-Knoten, und ich möchte nicht mehr Tool-Installationen auf Knoten erzwingen, wenn ich es vermeiden kann.

Die im verwendeten Pipeline-Plugin verwendete Groovy-Bibliothek sollte für diese Aufgabe perfekt sein. Für Groovy steht eine Erweiterung zur Verfügung, mit der einfache POSTs mit dem Namen http-builder ausgeführt werden können. Ich kann jedoch nicht für mein ganzes Leben herausfinden, wie ich sie in der Groovy-Installation von Jenkins verwenden kann.

Wenn ich versuche, Grapes Grab zu verwenden, um es in einem Pipeline-Skript zu verwenden, erhalte ich eine Fehlermeldung, wie hier zu sehen .

@Grapes(
    @Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1')
)

Möglicherweise wird Grapes Grab in der mitgelieferten Version von Groovy Jenkins nicht unterstützt. Ist es möglich, http-builder und seine Abhängigkeiten einfach herunterzuladen und zu der Jenkins Groovy-Installation hinzuzufügen, die an die Knoten gesendet wird?

17
S.Richmond

Vielleicht fehlt mir etwas, aber warum nicht einfach Standardbibliotheken Java) verwenden, die sich bereits im jenkins-Klassenpfad befinden?

import Java.io.BufferedReader
import Java.io.InputStreamReader
import Java.io.OutputStreamWriter
import Java.net.URL
import Java.net.URLConnection

def sendPostRequest(urlString, paramString) {
    def url = new URL(urlString)
    def conn = url.openConnection()
    conn.setDoOutput(true)
    def writer = new OutputStreamWriter(conn.getOutputStream())

    writer.write(paramString)
    writer.flush()
    String line
    def reader = new BufferedReader(new     InputStreamReader(conn.getInputStream()))
    while ((line = reader.readLine()) != null) {
      println line
    }
    writer.close()
    reader.close()
}

sendPostRequest("http://www.something.com", "param1=abc&param2=def")
5
TheEllis

Für die Jenkin's Pipeline würde ich empfehlen, das "HTTP-Request" -Plugin zu installieren

Es ist gut in Groovy integriert, so dass Sie es wie folgt verwenden können:

def response = httpRequest "http://httpbin.org/response-headers?param1=${param1}"
36
Alfredo MS