You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bamboo能否基于Curl请求返回的JSON响应判断任务失败?

Bamboo 200状态码下JSON字段校验部署状态的实现方案

方案1:Shell脚本主动控制退出码(推荐,无额外依赖/配置要求)

Bamboo的Shell脚本任务默认会根据脚本最终的退出码判定任务结果:退出码为0判定成功,非0判定失败。你不需要依赖Bamboo自带的HTTP状态码校验逻辑,直接在你的校验脚本内解析JSON字段,主动返回对应退出码即可。

实现步骤:

  • 调用校验接口时同时捕获HTTP状态码和响应体,先判断接口本身是否可正常访问
  • 使用轻量JSON解析工具提取status字段值
  • 匹配到失败状态时主动返回非0退出码,中断后续流程

示例脚本:

# 调用校验接口,同时保存响应体和HTTP状态码
RESPONSE=$(curl -s --connect-timeout 10 --max-time 30 "替换为你的校验接口URL" -w "\n%{http_code}")
# 分离HTTP状态码和响应体
HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
RESP_BODY=$(echo "$RESPONSE" | head -n -1)

# 先判断接口请求本身是否正常
if [ "$HTTP_CODE" != "200" ]; then
  echo "校验接口调用失败,HTTP状态码:$HTTP_CODE"
  exit 1
fi

# 解析status字段,优先使用jq,无jq可改用Python解析
if command -v jq &> /dev/null; then
  DEPLOY_STATUS=$(echo "$RESP_BODY" | jq -r '.status')
else
  DEPLOY_STATUS=$(echo "$RESP_BODY" | python3 -c "import json,sys; print(json.load(sys.stdin)['status'])")
fi

# 判断部署状态
if [ "$DEPLOY_STATUS" != "success" ]; then
  echo "部署校验不通过,当前状态:$DEPLOY_STATUS"
  exit 1
fi

echo "部署校验成功,可触发后续回归测试流程"

方案2:封装通用校验逻辑(适合多计划复用场景)

如果有多个部署计划需要用到同款校验逻辑,可以将上述脚本封装为Bamboo的共享脚本任务,配置参数化的校验接口地址、成功状态值等字段,所有计划直接引用即可,不用重复编写代码。

注意事项

  • 部署耗时2小时的情况下,建议调整Bamboo作业的超时阈值,避免任务被系统强制中断
  • 校验逻辑建议增加重试机制,避免因接口偶发抖动导致整个部署任务误判失败

内容的提问来源于stack exchange,提问作者Mihir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:27:04