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

Octopus Runbook 忽略Bash退出码无法标记运行失败问题求助

问题原因及解决方法

1. 代码语法错误

你当前Bash脚本的条件判断逻辑存在语法问题:[ $statusCode=200 ] 没有在变量、比较运算符、比较值之间添加空格,Bash会将整段视为非空字符串判断,永远返回真值,因此无论接口返回什么状态码,脚本最终都会返回0退出码,自然不会触发Runbook的失败标记。

此外代码没有处理curl请求本身异常(如网络不通、域名解析失败)的场景,此时$statusCode会为空或异常值,也会导致判断逻辑失效。

2. 修正后的代码

# 开启错误自动退出,避免异常时后续逻辑继续执行
set -e

url=$(get_octopusvariable "SmokeTestURL")
statusCode=$(curl -X POST \
  --silent \
  --output /dev/null \
  --write-out "%{http_code}" \
  --header "accept: application/json" \
  --header "Content-Type: application/json" \
  --data "..." \
  "$url")
 
echo "接口返回状态码:$statusCode"
 
# 补全条件判断空格,用数值比较运算符,增加变量引用引号避免空值异常
if [ "$statusCode" -eq 200 ]; then
  exit 0
else
  echo "冒烟测试不通过,期望状态码200,实际返回$statusCode"
  exit 1
fi

3. Runbook配置检查项

如果修正代码后问题仍然存在,检查对应步骤的配置:

  • 确认步骤的出错时继续选项未被勾选,该选项开启后会忽略脚本的非0退出码,强制标记步骤为成功
  • 确认步骤执行脚本的配置中没有全局添加set +e参数,该参数会忽略所有执行错误的退出码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:18:02