jenkins - query - logstash tutorial
¿Cómo puedo realizar solicitudes HTTP POST desde un script Jenkins Groovy? (3)
Necesito poder crear una solicitud HTTP POST simple durante nuestras compilaciones Jenkins Pipeline . Sin embargo, no puedo usar un simple script curl sh ya que lo necesito para trabajar en nodos de Windows y Linux, y no deseo aplicar más instalaciones de herramientas en los nodos si puedo evitarlo.
La biblioteca Groovy en uso en el complemento Pipeline que estamos usando debe ser perfecta para esta tarea. Hay una extensión disponible para que Groovy realice POST simples llamadas http-builder , pero no puedo por la vida de mí averiguar cómo usarla en la instalación Groovy de Jenkins.
Si trato de usar Grapes Grab para usarlo dentro de un script de Pipeline, aparece un error al no hacerlo, como se ve aquí .
@Grapes(
@Grab(group=''org.codehaus.groovy.modules.http-builder'', module=''http-builder'', version=''0.7.1'')
)
Tal vez Grapes Grab no es compatible con la versión incluida de los usos de Groovy Jenkins. ¿Es posible simplemente descargar y agregar http-builder y sus dependencias a la instalación de Jenkins Groovy que se envía a los nodos?
Debe descargar y copiar el archivo ivy.jar en el directorio lib de Jenkins (por ejemplo, C: / Archivos de programa (x86) / Jenkins / war / WEB-INF / lib) y reiniciar Jenkins (por ejemplo, a través de los servicios del sistema), entonces es posible usa @Grab desde la consola de scripts. Más información: https://groups.google.com/forum/#!msg/job-dsl-plugin/EG6eqQYYI7M/2TKKysNw4QEJ
Para la canalización de Jenkin, recomendaría instalar el complemento "HTTP-Request"
Está muy bien integrado en groovy, así que puedes usarlo así:
def response = httpRequest "http://httpbin.org/response-headers?param1=${param1}"
Tal vez me esté perdiendo algo, pero ¿por qué no usar bibliotecas java estándar que ya están en el classpath de 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¶m2=def")