Comment puis-je effectuer des requêtes HTTP POST depuis un script Jenkins Groovy?

j'ai besoin de pouvoir créer une requête HTTP POST simple pendant notre Jenkins Pipeline construit. Cependant, je ne peux pas utiliser un simple script curlsh car j'en ai besoin pour travailler sur les noeuds Windows et Linux, et je ne souhaite pas forcer plus d'installation d'outils sur les noeuds si je peux l'éviter.

La Bibliothèque Groovy utilisée dans le plugin de Pipeline que nous utilisons devrait être parfaite pour cette tâche. Il ya une extension disponible pour Groovy pour effectuer des messages simples appelé HTTP-builder, mais je ne peux pas, pour ma vie, trouver comment l'utiliser dans L'installation Groovy de Jenkins.

Si j'essaie d'utiliser des Raisins de Saisir l'utiliser à l'intérieur d'un Pipeline de script, j'obtiens une erreur en omettant de le faire, comme 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 supporté dans la version empaquetée de Groovy Jenkins. Est-il possible de simplement télécharger et ajouter http-builder et ses dépendances à L'installation de Jenkins Groovy qui va pour les nœuds?

16
demandé sur S.Richmond 2016-03-20 18:45:12

3 réponses

peut-être que je manque quelque chose, mais pourquoi ne pas simplement utiliser les bibliothèques java standard qui sont déjà sur le chemin de la 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")
4
répondu TheEllis 2016-04-08 18:49:20

pour le Pipeline de Jenkin je recommande l'installation du "HTTP-Request" plugin

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

def response = httpRequest "http://httpbin.org/response-headers?param1=${param1}"
33
répondu Alfredo MS 2016-05-27 01:28:43

Vous devez télécharger et copier le lierre.jar dans le répertoire lib de Jenkins (par ex. C:\Program fichiers (x86)\Jenkins\war\WEB-INF\lib) et redémarrer Jenkins (par exemple via les services système), il est alors possible d'utiliser @Grab à partir de la Console de Script. Lectures complémentaires: https://groups.google.com/forum/#!msg/job-dsl-plugin/EG6eqQYYI7M/2TKKysNw4QEJ

-1
répondu Brunisboy 2016-10-06 08:26:30