云机环境 · 非验收证据。所有结论下方均附物理命令输出。
sudo release-to-prod --mr <已合入test的MR编号> [--mr <编号>...] [--title "..."]
/usr/local/bin/release-to-prod,dev2 在 sudo 白名单内(NOPASSWD)checkout -B main codeup/main → 拷 release 脚本 → 跑 release-main.shcase "$*" in *--mr*) —— 不点名 MR 直接 exit 1(严禁整条 test 推 main)release/* 隔离分支,只 cherry-pick 点名 MR 的提交,再 MR 到 mainprintf 'y\n' | 喂确认| 流水线 | 部署什么 | 最近 run |
|---|---|---|
| main (5121207) | deploy/docker-compose.prod.yml → doctor-api / doctor-web(核心) |
run#140 · 08-19 · FAIL |
| settle-prod (5174891) | settlement/deploy/docker-compose.prod.yml → settlement-api / settlement-web |
run#7 · 08-10 · 至今没再跑过 |
settle-prod 仍指旧独立仓(台账原话),所以结算代码合进 main 只是进了总账、
生产结算容器一个字都不会更新。台账「切流门禁」写明:nginx 未切前合入 main
会致结算全站 404。
⇒ 需 root:切 settle-prod 流水线源 + 生产 nginx 切流 + reload。
生产 main 流水线连续 5 次全红(run#136/137/138/139/140),失败步骤日志尾部:
FAILED: Multiple head revisions are present for given argument 'head';
please specify a specific target revision, ... or 'heads' for all heads
ERROR [alembic.util.messaging] Multiple head revisions are present ...
run user script failed, exit code: 255
实测两棵迁移树的 head 数:
[main] migrations/versions: 68 文件 · heads 2 -> ['phase70_001', 'store_poster_demo_flag']
[main] settlement/backend/migrations/versions: 14 文件 · heads 1 -> ['phase66_000_zero_guarantee']
[test] migrations/versions: 69 文件 · heads 3 -> ['phase66_001', 'phase70_001', 'store_poster_demo_flag']
[test] settlement/backend/migrations/versions: 23 文件 · heads 1 -> ['phase71_000_support_qrcodes']
🔴 关键:test 的核心树是 3 个头,比 main 的 2 个还多 —— 发过去只会更糟,不会自愈。
✅ 好消息:结算树 main/test 都是单头、链条完整,结算迁移本身没病。
⚠️ 注意容器是 Started 之后才在迁移步挂的,所以"入口还活着"是真的;
但"迁移一直没应用"也是真的,不能拿入口 200 当迁移成功。
phase67_000_service_prices phase68_002_signup_wx_identity phase70_000_drop_pending_amount ←
phase67_001_change_clock_ts phase68_003_store_closed_fields phase71_000_support_qrcodes
phase68_000_payment_orders phase69_000_review_link_guard
phase68_001_refund_offset
按台账 SOP:含 migration 必须单独标红报长官(数据难退)。
phase70_000_drop_pending_amount 还是"摘临时清理码"的前置条件。
origin/main = ec0e6a49 origin/test = ecdff68c
test 领先 main: 674 commit main 领先 test: 300 commit(隔离 cherry-pick 发版的常态分叉,不是错)
结算侧 main..test: 169 commit · 136 文件
核心侧 app/ 差异: 6 文件 (对照组,证明查法有效)
main 上 08-19 确有两次发布(release/mr-379、release/mr-460-461),都是核心侧
(4l-summary + 路径修复)⇒ 生产链路是活的,"生产没动"专指结算那批。
release-to-prod 必须逐个点名 MR 编号,未列出的 MR 物理不会进发布分支。
待发范围据交接件是 #381 → #476(60+ 个),其中结算 25 件是 #464→#475、核心 1 件是 #476。
🔴 完整清单我在云机查不到(Codeup 令牌在 root 手里,release-pipeline-status 那把是纯只读 flow 令牌、
不含 MR 权限)⇒ 需长官或 root 给出要晋级的 MR 编号列表,我不猜。
https://chat.tongban.love/ / 生产 nginx 切流printf 'y\n' | sudo release-to-prod --mr N ... → 只建 MR 不自动合,链接给长官,等令合并settlement/deploy/nginx-settlement.conf → 部署后必须请 rootnginx -t && nginx -s reload(部署链只落盘不重载,不 reload = 改动物理无效)alembic_version / alembic_version_settlement 实际版本(需 root 或核心方代查)