【问题标题】:How can I perform HTTP POST requests from within a Jenkins Groovy script?如何从 Jenkins Groovy 脚本中执行 HTTP POST 请求?
【发布时间】:2016-10-06 16:26:30
【问题描述】:

我需要能够在 Jenkins Pipeline 构建期间创建简单的 HTTP POST 请求。但是我不能使用简单的 curl sh 脚本,因为我需要它在 Windows 和 Linux 节点上工作,如果可以避免的话,我不希望在节点上强制安装更多工具。

我们正在使用的 Pipeline 插件中使用的 Groovy 库应该非常适合这项任务。 Groovy 有一个可用于执行简单 POST 的扩展程序,称为 http-builder,但我终其一生都无法弄清楚如何在 Jenkins 的 Groovy 安装中使用它。

如果我尝试使用 Grapes Grab 在 Pipeline 脚本中使用它,则会收到错误消息,as seen here。

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

Groovy Jenkins 使用的捆绑版本可能不支持 Grapes Grab。是否可以简单地下载 http-builder 及其依赖项并将其添加到输出到节点的 Jenkins Groovy 安装中?

【问题讨论】:

标签: jenkins groovy jenkins-plugins jenkins-workflow


【解决方案1】:

对于 Jenkins 的管道,我建议安装 "HTTP-Request" plugin

它很好地集成在 groovy 中,因此您可以像这样使用它:

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

【讨论】:

  • 非常重要的限制:它不允许以编程方式添加标题。
  • 确实如此:httpRequest customHeaders: [[name: 'FOO', value: 'BAR']], url: 'http://company.com'
  • 为了安全起见,请注意:“每次执行都会记录所有参数。注意不要传递密码或个人信息等私人信息”(引用官方文档)
  • 您好,您知道如何通过 jenkins 管道中的 httprequest 插件发送 https 请求吗,由于证书是私有的,所以我的 https 请求会因认证错误而被阻止,是否有任何参数为curl 命令有喜欢 -k??谢谢!
【解决方案2】:

也许我遗漏了一些东西,但为什么不直接使用 jenkins 类路径中已经存在的标准 java 库呢?

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

【讨论】:

  • 因为脚本安全插件不允许调用 URL.openConnection() 方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多