Commit Graph

9 Commits

Author SHA1 Message Date
claude_dev a58d9fd385 fix(ci): vps-deploy/workflow四雷根治(pipefail×3+ssh裸连+收尾非幂等+关issue不查gap)——issue#33基建工作包#1-#4 [nas]
CI/CD / test (push) Successful in 7s
CI/CD / nas-deploy (push) Successful in 26s
CI/CD / nas-verify (push) Successful in 3s
pipefail+SIGPIPE 三处(本机复现rc=141确定性,run724根因):
- L82端口释放检测被反转(最危险): netstat大输出|grep -q命中即提前退出→上游tr吃SIGPIPE(141)→pipefail判整管道失败→走||分支谎报「已释放」→下一步/run撞10048竞态
- L91 API等待循环同雷=run724死因: 检测恒假→120轮耗尽exit1→收尾三步全跳过
- L98 /docs探活同族(输出仅3字节几乎不触发,顺手修)
修法: grep -q 'x' → grep 'x' >/dev/null(读完整流不提前退出,无SIGPIPE)

workflow内裸ssh全量补 -o ConnectTimeout=20(对齐vps_restart_resident.sh写法):
单次ssh挂死原会让整步无限冻结; vps-deploy.yml 9处+ci-cd.yml 2处(NAS)

收尾三步抽幂等脚本 scripts/ci/vps_finalize.sh(工作包#2):
- run681/715/724三实录: 部署本体成功但收尾被前序步骤失败整段跳过,只能人工拼三段补
- 现在workflow尾步自动调; 被跳过时Mac本机手跑即补: GTOKEN=<token> bash scripts/ci/vps_finalize.sh <部署的sha>
- 常驻重启失败不阻断tag/issue记账(代码已就位,末尾非零退出提醒); tag -f+push -f天然幂等; issue按真实gap开/关

关issue按真实gap(工作包#3,2026-08-21事故):
- 旧代码硬编码VPS_LOG=""无脑关issue——用户dispatch填旧sha(f28f9cf≠be315a0)漏推P0后,gap非空也关→用户误以为推完
- 修=finalize算vps-deployed..origin/master真实gap,非空则issue保持open并列剩余清单
- gap改按subject算(--format='%h %s'|grep,与enforce-label同定义): --grep匹配整个message,commit body里引用的命令文本会误命中(曾误开issue#7); ci-cd.yml check-vps-needed同步改
- vps_pending_check.py: GITHUB_SHA缺失时回退VPS_DEPLOY_SHA(支持Mac手跑); 有上轮部署sha时body加「仍未上VPS」警示
2026-08-22 22:33:24 +08:00
claude_dev 5211d5a6ed fix(reconcile+ci): 双轨配对按instance_id精确配对+部署API等待帽10→20分钟——①配对v2:v1按策略名dict收敛,同策略多live(live#10/#11都是channel_test)后者覆盖前者→live#10漏配live#11双配,15:10日终对账配错对(VPS 8对舰队实测:live#11↔shadow#44/45两行,live#10无);修为instance_id+周期精确优先→同实例退而求其次→无instance回退策略名唯一/周期一致,宁缺毋错;+2回归测试(复刻VPS实况/同实例不同周期)②vps-deploy API监听等待60→120次(run681实录:19常驻进程负载下API启动>10分钟,workflow 10分钟帽误杀放弃,API最终正常起服——但跳过了常驻重启/tag/关issue三步);938绿 [vps]
CI/CD / test (push) Successful in 9s
CI/CD / nas-deploy (push) Successful in 24s
CI/CD / nas-verify (push) Successful in 8s
2026-08-16 22:45:42 +08:00
claude_dev 0d95de2fc2 fix(ci): 僵尸端口守卫ZPID提取行加||true兜底——run674实录:/end干净杀掉后端口已空,grep无匹配+set -e -o pipefail把整步炸在提取行,死在schtasks /run前→API停在半路(已手动/run救回);守卫逻辑不变,仅容忍空结果 [nas]
CI/CD / test (push) Successful in 12s
CI/CD / nas-deploy (push) Successful in 26s
CI/CD / nas-verify (push) Successful in 11s
2026-08-16 19:21:42 +08:00
claude_dev d8d646fcd5 fix(#89+#90防线): 组合回测选实例不再预填标的池+vps-deploy僵尸API端口守卫——#89:prefillFromInstance删symbol_or_pool→form.pool预填(#86a定稿实例不选标的,老实例存的all不该悄悄改用户池选择;策略/max_pool/benchmark参数预填保留);#90防复发:API重启步在/end后netstat查8000持有PID强杀+端口未释放硬fail(2026-08-16实录uvicorn reload孤儿子进程17836跨两轮部署占端口,新实例静默抢不到,旧代码继续serve→500旧bug重现,人工taskkill+重拉后同请求200+task_id实证);build绿+yaml解析过 [nas]
CI/CD / test (push) Successful in 11s
CI/CD / nas-deploy (push) Successful in 31s
CI/CD / nas-verify (push) Successful in 15s
2026-08-16 19:08:26 +08:00
claude_dev bb934228db feat(ci): vps-deploy末步自动重启常驻进程(supervisor/影子柜台)——根因:部署只推码+重启API,常驻python进程16h跑旧代码(2026-08-15实录);vps_restart_resident.sh:盘中保护(北京工作日09:15-15:30跳过防杀撮合现场)+动态查PID(账户号会变,name=python.exe+sanguo_live supervisor/sanguo_trader.shadow两模式,免wmic自匹配)+taskkill /F /T杀树带走runner_live/shadow子进程+schtasks重拉+120s验证≥2进程;用户2026-08-16要求部署自动化 [nas]
CI/CD / test (push) Successful in 13s
CI/CD / nas-deploy (push) Successful in 31s
CI/CD / nas-verify (push) Successful in 11s
2026-08-16 18:07:02 +08:00
claude_dev c16c78aaf8 ci(vps-gate): vps-deploy加口令闸门(用户拍板): dispatch必填confirm=推vps,不符第一步fail; 前置=nas-verify绿+用户NAS验收+报待推清单+用户原话说「推vps」,不得代填/推断/沿用旧授权(2026-08-14两次违规教训固化); CLAUDE.md部署规则同步 [nas]
CI/CD / test (push) Successful in 12s
CI/CD / nas-deploy (push) Successful in 30s
CI/CD / nas-verify (push) Successful in 11s
2026-08-14 19:52:03 +08:00
claude_dev 8f184c9f2e ci(vps-deploy): 纳入前端dist同步+API重启(治公网前端无管线手动步骤): Mac构建+tar+scp→VPS换dist(脚本入仓scripts/nas_sync,vps_update_dist.py); 重启加端口释放等待(防end→run竞态10048静默崩,今日实踩)+起服探活(上限10min) [nas]
CI/CD / test (push) Successful in 13s
CI/CD / nas-deploy (push) Successful in 29s
CI/CD / nas-verify (push) Successful in 12s
2026-08-14 10:06:54 +08:00
claude_dev 67d1c1ef2f 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: 部署流程段补标签约定
2026-08-02 23:25:40 +08:00
claude_dev 5d54e22f72 feat(ci): CI/CD分层(NAS自动验证+VPS dispatch)
CI/CD / test (push) Successful in 9s
CI/CD / nas-deploy (push) Failing after 12s
CI/CD / nas-verify (push) Has been skipped
promote.sh 加 --target nas|vps|all(拆 NAS/VPS,默认 all 兼容)。ci-cd.yml 重构: push→test→nas-deploy(推NAS后端+前端dist+restart容器)→nas-verify(login+strategy/list+dbbardata 秒级 gate),不再自动推 VPS。vps-deploy.yml 新建: workflow_dispatch+sha input,checkout 指定 commit→promote --target vps→verify,严格版本一致(VPS=NAS验证过的 commit)。两种 approve: 人工 Gitea UI Run workflow / agent MCP dispatch_workflow。原因: Gitea 不支持 environment approval gate,此前 promote.sh 同时推 NAS+VPS 无隔离,push 即上 prod。
2026-07-31 15:14:05 +08:00