我有一个在shell脚本中定义的Curl post请求,它是我在竹子计划中的默认任务的一部分。
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”字段,以确定阶段是否成功。
我看过Can Bamboo interpret an HTTP 400 Bad request as a failure,但这篇文章谈到了返回非2xx代码。在我的示例中,它返回200,但是其中一个json响应字段包含错误消息,我需要查看该消息以确定是失败还是成功。
有没有办法让我继续下去?任何帮助都将不胜感激。
发布于 2021-11-16 18:08:37
我遵循了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发布于 2021-11-16 12:32:57
我认为您可以编写shell脚本,它将使用jq等库分析响应JSON,然后根据状态字段的值调用exit 0或exit 1。在退出1的情况下,竹子会将任务和作业标记为失败
https://stackoverflow.com/questions/69987335
复制相似问题