44 lines
2.6 KiB
Bash
44 lines
2.6 KiB
Bash
#!/usr/bin/env bash
|
|
# 棋盘黄金图 CI 自愈补采(2026-11-08 用户裁:补采自动化——渲染能力在 runner 会话里,人手不做二进制搬运)。
|
|
# 背景:golden 基线按平台分目录(render_gate.sh:37 gate_platform_id),改版批只能重制本平台侧;
|
|
# 他平台基线缺失=渲染闸红(基准未建),而补采必须在他平台真实渲染——只有 runner 会话做得到。
|
|
# 本件挂 CI full 批(ci.yml 导入步之后、跑闸步之前):缺棋盘三件基线时跑 golden_baseline_refresh
|
|
# 棋盘模式,产物提交回 master 并推送,下一轮 full 批拉取后渲染闸绿。
|
|
# 护栏:
|
|
# - 只认 CI 跑批环境(GITHUB_WORKSPACE 必在)——本地误跑立即拒(防人手把本平台基线提交出去)。
|
|
# - 三件基线齐盘即零动作退出(幂等——不会每轮提交,无循环)。
|
|
# - 只 add 三件 PNG;刷新红/落盘缺/提交败/push 败一律置红不静默,下一轮 full 批自动重试。
|
|
set -u
|
|
: "${GITHUB_WORKSPACE:?本件只属 CI 跑批环境(GITHUB_WORKSPACE 必在)——人手补采走 tools/golden_baseline_refresh.sh}"
|
|
REPO="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
cd "$REPO"
|
|
. "$REPO/tools/gate_platform.sh"
|
|
PLAT="$(gate_platform_id)"
|
|
GOLDEN_DIR="game/tests/golden/$PLAT"
|
|
BOARD_FILES="board_L1_dungeon.png board_L2_underdark.png board_L3_deep_underdark.png"
|
|
|
|
_miss=0
|
|
for b in $BOARD_FILES; do
|
|
[ -s "$GOLDEN_DIR/$b" ] || { _miss=1; echo "[selfheal] 缺基准: $GOLDEN_DIR/$b"; }
|
|
done
|
|
if [ "$_miss" -eq 0 ]; then
|
|
echo "[selfheal] $PLAT 棋盘三件基线在库——零动作(幂等护栏)"
|
|
exit 0
|
|
fi
|
|
|
|
GODOT_BIN="${GODOT_BIN:?GODOT_BIN 必注(runner 自举件安装位)}" \
|
|
bash "$REPO/tools/golden_baseline_refresh.sh" game || {
|
|
echo "[selfheal] FAIL — 补采刷新脚本红(探针自检/裁剪失败见上)"; exit 1
|
|
}
|
|
for b in $BOARD_FILES; do
|
|
[ -s "$GOLDEN_DIR/$b" ] || { echo "[selfheal] FAIL — 刷新后仍缺: $b"; exit 1; }
|
|
done
|
|
for b in $BOARD_FILES; do
|
|
git add "$GOLDEN_DIR/$b"
|
|
done
|
|
git -c user.name="gitea-actions" -c user.email="actions@noreply.git.kuaimeo.com" \
|
|
commit -m "黄金图自愈补采($PLAT·棋盘三件): 渲染闸缺基准——golden_baseline_refresh棋盘模式在runner会话渲染产出,本提交由CI采集步自动落库,下一轮full批拉取后渲染闸绿;触发源提交见父提交" \
|
|
|| { echo "[selfheal] FAIL — git commit 失败(无差异或工作区异常)"; exit 1; }
|
|
git push origin HEAD:master || { echo "[selfheal] FAIL — push 失败(令牌权限/分支保护;修复前每轮 full 批会重试)"; exit 1; }
|
|
echo "[selfheal] 完成 — 基线已落库,下一轮 CI 拉取生效"
|