在Jenkins声明式管道中如何将curl响应保存到变量?
解决Jenkins声明式管道中curl返回多余内容的问题
要只捕获URL返回的JSON响应,你需要调整脚本写法,抑制命令回显并让curl输出仅保留响应内容:
方法一:优化curl命令(bat环境)
修改environment块中的代码,给curl命令加@前缀抑制bat回显,同时添加curl的-s参数开启静默模式:
environment { token = bat(returnStdout: true, script: '@curl -s https://anypoint.mulesoft.com/accounts/login -H "Content-Type: application/json" -d "{\"username\" : \"user\",\"password\" : \"pwd\"}"').trim() }
关键调整说明:
@:放在curl命令前,阻止bat输出执行的命令行本身-s:curl的静默参数,关闭进度条、连接状态等多余输出(若需要在出错时显示错误信息,可改用-sS).trim():去除响应首尾的空白字符和换行符
方法二:改用PowerShell处理(更适配JSON场景)
如果你的Jenkins节点支持PowerShell,推荐用Invoke-RestMethod直接处理请求,原生支持JSON且输出更干净:
environment { token = powershell(returnStdout: true, script: '$response = Invoke-RestMethod -Uri "https://anypoint.mulesoft.com/accounts/login" -Method Post -ContentType "application/json" -Body "{\"username\":\"user\",\"password\":\"pwd\"}"; ConvertTo-Json $response').trim() }
以上两种方式都能让你获取到纯净的JSON响应内容,不会夹杂命令执行的额外信息。
内容的提问来源于stack exchange,提问作者Abhay
相关产品推荐
相关产品推荐

