fix(ci): 反向门禁不再写死用例总数,改钉「缺表必报 error、断言不得失败」
build / build-push (push) Successful in 3m46s

verify-failure-guard.sh 原断言固定 'Tests run: 92, Failures: 0, Errors: 11',
而本候选门禁类实跑 101 例(D10/D11 新增用例),写死总数会让正常演进直接红灯、
阻断镜像产出。改为解析最后一行 Surefire 汇总并断言 tests>0 / failures=0 / errors>0,
保留“空 schema 必须阻断打包且不产 JAR”的原意。

本地等价实跑(隔离 MySQL 8.0.45,ddl-auto=validate,空 schema):
NEGATIVE_MVN_EXIT=1,NEGATIVE_SUMMARY tests=101 failures=0 errors=11 skipped=0,
CI_EMPTY_SCHEMA_FAILURE_GUARD=PASS。
This commit is contained in:
chenxing
2026-10-27 12:11:10 +08:00
parent 500a9a2fcb
commit 8d4a0bdba8
+9 -1
View File
@@ -13,6 +13,14 @@ cat "$log"
echo "NEGATIVE_MVN_EXIT=$code"
[ "$code" -ne 0 ] || { echo 'Empty schema unexpectedly passed' >&2; exit 1; }
grep -q 'Schema-validation: missing table' "$log"
grep -q 'Tests run: 92, Failures: 0, Errors: 11, Skipped: 0' "$log"
# 只钉“缺表必须让真实库用例报 error、其余断言不得失败”这一契约,不钉具体用例总数:
# 门禁类会随被测类新增用例而变化(2026-10-27 已由 92 增至 101),写死总数会把正常演进变成红灯。
summary=$(sed -n 's/.*Tests run: \([0-9]*\), Failures: \([0-9]*\), Errors: \([0-9]*\), Skipped: \([0-9]*\).*/\1 \2 \3 \4/p' "$log" | tail -1)
[ -n "$summary" ] || { echo 'Negative gate produced no Surefire summary' >&2; exit 1; }
set -- $summary
echo "NEGATIVE_SUMMARY tests=$1 failures=$2 errors=$3 skipped=$4"
[ "$1" -gt 0 ] || { echo 'No tests ran' >&2; exit 1; }
[ "$2" -eq 0 ] || { echo 'Empty schema caused assertion failures, not schema errors' >&2; exit 1; }
[ "$3" -gt 0 ] || { echo 'Empty schema did not produce any schema error' >&2; exit 1; }
[ -z "$(find target -maxdepth 1 -name '*.jar' -print -quit 2>/dev/null)" ] || { echo 'Failed gate produced a JAR' >&2; exit 1; }
echo 'CI_EMPTY_SCHEMA_FAILURE_GUARD=PASS'