Groovy 和 Jenkins - 将 curl 输出捕获到文件

Posted

技术标签:

【中文标题】Groovy 和 Jenkins - 将 curl 输出捕获到文件【英文标题】:Groovy & Jenkins - capture curl output to a file 【发布时间】:2017-07-11 01:13:38 【问题描述】:

我想在 Jenkins 中填写一个动态参数框。

我的 Groovy 脚本应该执行以下操作:

    在文件中收集 JSON 输出。 解析 JSON 输出以获得一些特定值。 在 Jenkins 的动态参数列表中显示这些值,以便从中选择一个。

你能帮我写一下 Groovy 脚本吗?不知道 Groovy :-(。

谢谢!

【问题讨论】:

为什么要做1.?见Groovy – Learn、Groovy – Parsing and producing JSON、how to parse json using groovy等 我应该先运行一个 curl 命令来获取我的 json 输出文件,然后我必须从这个 json 文件中获取一些信息。 “jsonSlurper.parseText”支持 curl 执行?我的 curl 命令具有以下形状: curl -s ''$URL' -u $USERKEY 【参考方案1】:

您不必将 JSON 数据写入文件即可实现此目的。

以Perfectly working curl command fails when executed in a groovy script 和Parsing and producing JSON, 1. JsonSlurper 为基础,在动态参数的脚本中执行以下操作:

import groovy.json.JsonSlurper

url= "http://user:pwd@jenkins/api/json"
process = [ 'bash', '-c',  "curl $url" ].execute()
process.waitFor()
//println process.err.text  // for debugging in Jenkins' Script Console
//println process.text
info = new JsonSlurper().parseText(process.text)
return info._class

使用参数构建处的输出:

此构建需要参数:

动态参数hudson.model.Hudson

【讨论】:

以上是关于Groovy 和 Jenkins - 将 curl 输出捕获到文件的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins:管道 sh 错误替换错误

Jenkins-pipeline 从 groovy 中的属性文件中提取和设置变量

Jenkins上的Groovy:Plot插件

jenkins执行groovy 脚本报错

通过Jenkins执行Groovy命令:“find:缺少`-exec'的参数”

如何使用 groovy 模板在 Jenkins 中发送电子邮件?