Просмотр исходного кода

fix(ci): 暴露接口冒烟真实通过率并修复 set -u 下 commit 失败

- Python 冒烟汇总阶段将真实 RATE/FIXED_COUNT/REGRESSED_COUNT 写入
  interface_test_metrics.env,供 bash 提交信息使用
- bash 提交前读取该文件并初始化默认值,消除 set -u 下 $fixed/$regressed
  unbound variable 导致整条 git commit 命令展开失败(曾使测试结果无法提交)
- 提交信息由假 '?%' 改为真实通过率,例如 '通过率 45% (fix=0 reg=0)'
E2E Test Bot 2 недель назад
Родитель
Сommit
2447248324
1 измененных файлов с 12 добавлено и 1 удалено
  1. 12 1
      run_interface_tests_cron.sh

+ 12 - 1
run_interface_tests_cron.sh

@@ -186,6 +186,13 @@ with open(trend, 'a', encoding='utf-8') as f:
     f.write(f"{ts}\ttotal={total}\tBIZ_OK={ok}\trate={rate}%\t"
             f"fixed={len(fixed)}\tregressed={len(regressed)}\t"
             f"NOT_FOUND={cats.get('NOT_FOUND',0)}\tSERVER_ERR={cats.get('SERVER_ERR',0)}\n")
+
+# 导出真实指标供 bash 提交信息使用(修复 rate/fixed/regressed 在子进程不可见导致
+# commit 失败 + 假通过率 ?%;bash 侧 set -u 下 unbound variable 亦会导致整条命令展开失败)
+_metrics_path = os.path.join(os.path.dirname(trend), 'interface_test_metrics.env')
+with open(_metrics_path, 'w', encoding='utf-8') as _mf:
+    _mf.write(f"RATE={rate}\nFIXED_COUNT={len(fixed)}\nREGRESSED_COUNT={len(regressed)}\n")
+
 print(report)
 print(f"\n[趋势] 已写入 {trend}")
 PY
@@ -198,10 +205,14 @@ git add -f ops_interface_smoke.py
 # EXTRA_CASES 仅在存在且有内容时才加入,避免缺失路径使整个 git add 失败(旧逻辑缺陷)
 git add -f INTERFACE_TEST_REPORT.md interface_test_report.tsv cfc-frontend/INTERFACE_TEST_MATRIX.md
 [ -s "$EXTRA_CASES" ] && git add -f "$EXTRA_CASES"
+# 读取 Python 计算出的真实指标(修复 set -u 下 unbound variable 致 commit 失败 + 假通过率 ?%)
+RATE="?"; FIXED_COUNT=0; REGRESSED_COUNT=0
+METRICS_ENV="$REPO_DIR/interface_test_metrics.env"
+[ -f "$METRICS_ENV" ] && . "$METRICS_ENV"
 if git diff --cached --quiet; then
   log "无测试结果变更,跳过提交"
 else
-  git commit -m "test(interface): 接口冒烟闭环 $(date '+%Y-%m-%d %H:%M') — 通过率 ${rate:-?}% (fix=$(echo $fixed|wc -l) reg=$(echo $regressed|wc -l))" \
+  git commit -m "test(interface): 接口冒烟闭环 $(date '+%Y-%m-%d %H:%M') — 通过率 ${RATE}% (fix=${FIXED_COUNT} reg=${REGRESSED_COUNT})" \
     >>"$LOG_DIR/interface_cron.log" 2>&1 && log "已提交测试结果"
 fi