【问题标题】:Can Bamboo detect failure based on JSON response of Curl Request?Bamboo 可以根据 Curl Request 的 JSON 响应检测失败吗?
【发布时间】:2021-12-27 10:10:16
【问题描述】:

我有一个在 shell 脚本中定义的 Curl 发布请求,作为 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 interpret an HTTP 400 Bad request as a failure,但这谈到了返回非 2xx 代码。在我的情况下,它返回 200,但其中一个 json 响应字段包含错误消息,我需要查看它以确定它是失败还是成功。

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

【问题讨论】:

    标签: curl bamboo


    【解决方案1】:

    我按照上面 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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 非常感谢您提出这个想法。我会试试的,然后告诉你。
      猜你喜欢
      • 2021-12-31
      • 1970-01-01
      • 2011-09-17
      • 2014-07-01
      • 2017-02-27
      • 2019-06-29
      • 1970-01-01
      • 2010-11-07
      • 2018-11-02
      相关资源
      最近更新 更多