web-dev-qa-db-fra.com

Comment puis-je effectuer des requêtes HTTP POST à partir d'un script Jenkins Groovy?

J'ai besoin de pouvoir créer une simple requête HTTP POST requête lors de nos builds Jenkins Pipeline . Cependant, je ne peux pas utiliser un simple script curl sh car j'en ai besoin pour travailler sur Windows et les nœuds Linux, et je ne souhaite pas appliquer plus d'installations d'outils sur les nœuds si je peux l'éviter.

La bibliothèque Groovy utilisée dans le plugin Pipeline que nous utilisons devrait être parfaite pour cette tâche. Il y a une extension disponible pour Groovy pour effectuer des POST simples appelés http-builder , mais je ne peux pas pour la vie de me débrouiller pour l'utiliser dans l'installation Groovy de Jenkins.

Si j'essaie d'utiliser Grapes Grab pour l'utiliser dans un script Pipeline, j'obtiens une erreur à défaut, comme on le voit ici .

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

Peut-être que Grapes Grab n'est pas pris en charge dans la version intégrée de Groovy Jenkins. Est-il possible de télécharger et d'ajouter simplement http-builder et ses dépendances à l'installation Jenkins Groovy qui va aux nœuds?

17
S.Richmond

Peut-être que je manque quelque chose, mais pourquoi ne pas simplement utiliser les bibliothèques standard Java qui sont déjà sur le chemin de classe jenkins?

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

Pour le Jenkin's Pipeline, je recommanderais d'installer le plug-in "HTTP-Request"

Il est bien intégré dans groovy, vous pouvez donc l'utiliser comme ceci:

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