Bamboo可以根据Curl请求的JSON响应检测故障吗



我在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的响应。但在回应中,我希望阅读"状态"字段,以决定阶段是否成功。

我看了Can Bamboo将HTTP 400 Bad请求解释为失败,但这涉及到返回非2xx代码。在我的例子中,它返回一个200,但其中一个json响应字段包含错误消息,我需要查看该消息来判断它是失败还是成功。

有办法让我继续吗?任何帮助都将不胜感激。

我认为您可以编写shell脚本,该脚本将使用一些库(如jq(分析响应JSON,然后根据状态字段值调用出口0或出口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

最新更新