groovy java.io.IOException:无法运行程序“curl”:错误=2,没有此类文件或目录

d7v8vwbk  于 2022-11-01  发布在  Java
关注(0)|答案(1)|浏览(207)

我正在使用jenkins的docker映像,并将其部署在kubernetes集群上。我已经编写了一个groovy脚本,在jenkins上的一个动态创建的slave上运行curl命令,并且还配置了slave来运行curl命令,但是在我的jenkins控制台中出现了上述错误。我还使用where curl检查了curl是否安装在我的slave节点上,它给出的响应为/usr/bin/curl
我试过在我的从节点上只运行curl命令,它能工作。但是当我用Jenkins调用groovy脚本文件时,它给出了错误java.io.IOException: Cannot run program "curl": error=2, No such file or directory

rqenqsqc

rqenqsqc1#

我猜groovy找不到curl,请尝试使用完整路径调用curl,如下所示:

def process = ['/usr/bin/curl', 'https://someurl'].execute()
process.consumeProcessOutput(System.out, System.err)
process.waitFor()

作为一种替代方案,如果您只需要对某个url执行http get请求,您可以在普通Groovy中执行此操作,而不需要依赖curl,方法是:

def response = 'https://someurl'.toURL().text

〈评论后编辑〉
您还可以使用纯groovy和类似下面的代码(未经测试)来执行post请求:

def url  = 'http://api.duckduckgo.com'.toURL()
def body = 'some data'
url.openConnection().with {
  doOutput      = true
  requestMethod = 'POST'

  // send post body 
  outputStream.withWriter { writer ->
    writer << body
  }

  // set header 
  setRequestProperty "Content-Type", "application/x-www-form-urlencoded"

  // print response
  println content.text
}

相关问题