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
我在 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' 的字段来决定该阶段是否成功。
我查看了
有什么方法可以继续吗?任何帮助将不胜感激。
我认为您可以制作 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