Files
lsky-pro-docker/.github/workflows
mole404 a2081e859c fix(ci): MPM 自证步骤改为严格串行(每用例独立容器 + 独立卷)
上一版六个用例共用同一个卷、六个容器并发跑 entrypoint:A 的 chown -R 与 B 对
同一批文件的播种写入互踩(chown: ... No such file or directory),entrypoint 是
set -eu,chown 失败容器当场退出,后续 docker exec 报 No such container 而失败。

改法(只动 CI,产品代码零改动 —— 真实用户只跑一个容器,不存在该竞争):
- 每个用例独立容器 + 独立卷,严格串行:run → 等就绪 → 断言 → rm 容器+卷 → 下一个,
  任何时刻最多一个容器在跑 entrypoint。
- 就绪信号:CMD 改为 `sh -c 'echo "[lsky-mpm] READY"; sleep 300'`;entrypoint 末尾是
  exec "$@",故 READY 必然晚于播种/同步 + chown -R/chgrp -R/chmod -R 全部完成,
  即上一个卷的写入者已收工,才进入下一个用例。
- 轮询容器状态,遇到 exited/dead 立即报错并 dump 日志;每个 docker exec 前
  need_running 复核容器仍在运行;断言完即 finish_case 释放。
- 四类断言语义、apache2ctl -t 语法检查与 DUMP_RUN_CFG 信息性输出全部保留。

验证:yaml.safe_load 通过;抽取 run 脚本 bash -n 通过;静态走查并发(全脚本仅 1 处
docker run、无 & 后台化、run 前后各有 rm -f);用假 docker 替身真跑该步骤脚本 ——
新脚本 0 条并发违规、四类断言全绿 EXIT=0;同一替身跑旧脚本复现 5 条并发违规 +
15 条共用卷(与线上失败现象一致);并验证"容器启动即退出"路径能快速失败并清理干净。
2026-09-30 00:33:57 +08:00
..