ci(vps-gate): commit必打[vps]/[nas]标签+vps-deployed tag+待推issue [nas]
CI/CD / test (push) Successful in 11s
CI/CD / nas-deploy (push) Successful in 24s
CI/CD / nas-verify (push) Failing after 4s

- ci-cd: enforce-label(本次push无标签→fail,merge豁免) + check-vps-needed(nas-verify绿后对比vps-deployed tag,有[vps]未部署→开issue)
- vps-deploy: 成功打vps-deployed tag + 关issue(gap清空)
- scripts/ci/vps_pending_check.py: issue开/关/更新(CI复用)
- docs: vps-impact-map触及面表 + vps-deploy-pending判定记录
- CLAUDE.md: 部署流程段补标签约定
This commit is contained in:
2026-08-02 23:25:40 +08:00
parent b66a6c5958
commit 67d1c1ef2f
6 changed files with 292 additions and 4 deletions
+5
View File
@@ -140,6 +140,11 @@ NAS 上用于本项目部署的目录有两个(容器挂载源):
> **职责边界(所有 session 必须遵守)**:开发/数据/策略 session 改完代码 `git push` 即完成(NAS 自动验证,到此为止);**VPS prod 部署绝不自动**,必须 nas-verify 绿后由人确认触发 `vps-deploy.yml`。**业务 session 不要自己推 VPS**push 只到 NAS);推 VPS 是运维 agent + 人协作的决策。
> **commit 必须打环境标签(CI 强制,所有 session 必读)**:每条 commit message 末尾带 `[vps]`VPS 也中招,含通用代码,待推 prod)或 `[nas]`NAS/docker 专属,VPS 不中招)。`ci-cd.yml` 的 `enforce-label` 步骤:本次 push 的 commit 无标签 → **CI 直接 fail**merge commit 豁免)。
> - **判定**:维度是「VPS 运行时是否触发」,不是「文件改了没」。触及面清单见 `docs/vps-impact-map.md`VPS 触及=data/backtest/portfolio.runner_backtest/provider;不触及=orchestrator/api.web/web前端/docker/.gitea)。
> - **`[vps]` 触发链**Gitea 无 approval gate,用 issue+tag 替代 GitHub 的 action_required 黄色):nas-verify 绿后 CI 自动开/更新 `[待推VPS]` issue**open=黄/待推**,持久可见);人工/agent 推 `vps-deploy.yml` 成功 → 打 `vps-deployed` tag + 自动关 issue**close=绿/已推**)。CI run 保持绿(NAS 部署成功不污染)。
> - **查 VPS 还差哪些**`git log vps-deployed..HEAD --grep='\[vps\]'`VPS 版本真相 = 移动 tag `vps-deployed`,指向最后部署 VPS 的 sha)。
**NAS test 自动部署+验证**:改完代码 `git push origin master` → Gitea Actions 自动跑 ci-cd.yml
```
test(pytest 数据层) → nas-deploy(推 NAS 后端+前端 dist+restart 容器) → nas-verify(login+strategy/list+dbbardata 秒级 gate)