Bamboo 可以根据 Curl 请求的 JSON 响应检测失败吗?

Can Bamboo detect failure based on JSON response of Curl Request?

我在 shell 脚本中定义了一个 Curl post 请求,作为我在 Bamboo 计划中的默认作业的任务的一部分。

Curl 请求在我的一个 QA 环境中执行部署。作为全栈部署,完成部署大约需要 2 小时。

部署完成后,为了检查部署状态,我想再发送一个 curl 请求,其响应中有一个状态字段,表明部署是否成功。

这是请求的示例响应:

{
  "_id" : "xxx",
  "templateId" : "xxx",
  "templateName" : "all full reinstall",
  "epoch" : "2021-11-12T10:22:14.268Z",
  "userEmail" : "xxx@xxx.com",
  "playbook" : "all_full_reinstall.yml",
  "repoId" : "xxx",
  "repoName" : "tower-in-house",
  "inventoryId" : "xxx",
  "inventoryName" : "xxx",
  "status" : "failed"
}

我还有其他阶段会触发一些回归测试,但只有在状态为成功而不是失败时才会触发这些阶段。

挑战是 curl 请求给出了 200 的响应。但是在响应中我希望阅读 'status' 的字段来决定该阶段是否成功。

我查看了 ,但这讨论的是返回非 2xx 代码。在我的例子中,它 returns 一个 200,但是 json 响应字段之一包含错误消息,我需要查看它来决定它是失败还是成功。

有什么方法可以继续吗?任何帮助将不胜感激。

我认为您可以制作 shell 脚本,该脚本将使用 jq 等库分析响应 JSON,然后根据状态字段值调用 exit 0 或 exit 1。 在退出 1 的情况下,Bamboo 会将任务和作业标记为失败

我按照上面 Oleksiy Chystoprudov 的回答解决了这个问题。

这是我用的

response=$(curl -s "API_Endpoint_to_check_deployment_status" | jq '.status' | tr -d '"' )
if [ "$response" = "success" ]; then
exit 0
else
exit 1
fi