shuangyan-notebook/第五域 · Fifth Domain/⚒️ 铸渊·协作指令|GitHub ↔ Notion 桥接协议/🔧 铸渊排查指令|CD自动部署全链路诊断(霜砚签发·2026-03-10) 06cccab2fe6e4fc5aea77ebb4f8b7b89.md
Guanghu Domestic Migration a27e87cb99 chore: import sanitized domestic snapshot for REPO-007
Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc

[SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
2026-07-17 15:59:55 +08:00

8.4 KiB
Raw Permalink Blame History

belongs_to
belongs_to
INDEX · 铸渊·协作指令GitHub ↔ Notion 桥接协议

🔧 铸渊排查指令CD自动部署全链路诊断霜砚签发·2026-03-10


🎯 排查目标

确认 CD 自动部署管线push to main → guanghulab.com 自动更新)是否跑通。如果没跑通,定位卡在哪一步。


📋 排查清单(逐项执行·逐项回报)

第一步:确认工作流文件是否在 main 分支上

git ls-tree main .github/workflows/deploy-to-server.yml
  • 如果输出有内容 → 文件存在
  • 如果输出为空 → 文件不在 main 上,说明 PR 没合并或者被删了

第二步:检查 GitHub Actions 运行历史

打开仓库 → Actions 选项卡 → 查看:

  1. deploy-to-server 工作流是否出现在左侧列表中?
  2. 最近一次运行是什么时候?状态是 还是
  3. 如果从来没运行过 → 说明从来没有触发过(可能是路径过滤把所有 push 都排除了)
  4. 如果运行过但失败 → 打开失败的 run截取错误日志

第三步:检查工作流触发条件

读取 .github/workflows/deploy-to-server.ymlon.push 配置:

on:
  push:
    branches: [main]
    paths-ignore:
      - ...

确认:

  • 触发分支是否是 main
  • paths-ignore 是否过滤掉了太多路径?(比如是否把所有模块目录都排除了?)
  • 最近一次 push 到 main 的文件是否全部命中了 paths-ignore

第四步:检查部署目标目录

⚠️ 已知问题:上次盘点发现 deploy-to-server.yml 同步的是 docs/ 目录,不是 status-board/ 或正确的站点根目录。

确认:

  • rsync 的 path 参数实际指向哪个目录?
  • 服务器上 Nginx 的 root 指向 /var/www/guanghulab/ 的哪个子目录?
  • 两者是否一致?

第五步:检查 GitHub Secrets 有效性

在 Actions 的某次运行日志中确认:

  • DEPLOY_HOST 是否能连通rsync 是否报 SSH 连接失败?)
  • DEPLOY_KEY 是否有效?(是否报 Permission denied
  • DEPLOY_PATH 是否正确?(服务器上这个路径是否存在?)

第六步:手动触发一次测试

如果工作流文件存在且配置正确:

# 方法一:在仓库 Actions 页面点 "Run workflow" 手动触发(如果支持 workflow_dispatch
# 方法二push 一个小改动触发
echo "# CD test $(date)" >> CD-TEST.md
git add CD-TEST.md
git commit -m "test: CD pipeline trigger test · YM-CD-DEBUG-20260310-001"
git push origin main

然后观察 Actions 是否触发,每个 Job 是否通过。


📝 铸渊回报格式

排查完成后,在本页下方追加以下内容:

━━━ 铸渊排查报告 · YM-CD-DEBUG-20260310-001 ━━━
排查时间:[日期时间]
commit SHA[当前 main HEAD]

① 工作流文件在 main 上:✅ / ❌
② Actions 运行历史:从未运行 / 最近一次 [日期] [状态]
③ 触发条件配置:[是否正确 + 具体配置]
④ paths-ignore 范围:[列出所有排除路径]
⑤ 部署目标目录rsync path = [?] / Nginx root = [?] / 是否一致 [?]
⑥ Secrets 状态:连接成功 / 连接失败 [具体错误]
⑦ 手动触发测试结果:
   - validate job✅ / ❌ [错误信息]
   - deploy job✅ / ❌ [错误信息]
   - notify job✅ / ❌ [错误信息]
⑧ 服务器上文件是否更新:✅ / ❌
⑨ guanghulab.com 是否显示最新内容:✅ / ❌

【结论】CD管线 [已跑通 / 卡在第X步]
【原因】:[一句话说明]
【建议修复方案】:[具体操作]

✅ YM-CD-DEBUG-20260310-001 排查完成 · [日期时间]


🚨 二次更新(霜砚签发 · 2026-03-10 22:50

已确认的 Secrets 配置

Secret 状态
DEPLOY_HOST 8.155.62.235(阿里云 ECS 公网IP 已填
DEPLOY_USER root 已填
DEPLOY_KEY SSH 私钥PEM 已配置
DEPLOY_PATH /var/www/guanghulab/status-board 已填

新发现问题:sync-persona-studio.yml 反复失败

截至 2026-03-10 22:50Actions 页面显示 1,071 次工作流运行。失败的全部是同一个 workflowsync-persona-studio.yml,包括:

  • #85 — 合并 PR #47fix-api-input-is后触发失败
  • #84 — 合并 PR #49fix-model-intera后触发失败
  • #83 #82 — 合并 PR #50fix-api-response后触发失败
  • #81 — 合并远程更新并添加钉钉Phase1模块后失败
  • #80 — 合并 PR #51debug-cd-deploy后失败
  • 更早的多次运行也失败

成功的 workflow 是别的铸渊·问题自动回复、冰朔人物体·自动配置诊断、pages-build-deployment 等)。

铸渊立即执行以下排查

━━━ 铸渊紧急排查任务 · YM-CD-DEBUG-20260310-002 ━━━

① 读取 .github/workflows/sync-persona-studio.yml 全文
   → 确认触发条件、执行逻辑、依赖的 Secrets/环境变量

② 打开最近一次失败的 run#85
   → 展开失败的 step复制完整错误日志

③ 定位根因,可能的方向:
   a. yml 文件语法错误
   b. 引用了不存在的 Secret
   c. SSH 连接/部署步骤失败
   d. 脚本执行错误node/python 运行时问题)
   e. 权限/Token 无效

④ 修复问题,提交修复 commit确认下一次触发时 sync-persona-studio.yml 能跑通

⑤ 同时确认 deploy-to-server.yml 也能正常跑通(开发者上传的模块能自动部署到 guanghulab.com

⑥ 全部修复完成后,在本页底部追加排查报告,格式:

━━━ 铸渊排查报告 · YM-CD-DEBUG-20260310-002 ━━━
排查时间:[YYYY-MM-DD HH:mm]
commit SHA[xxx]

① sync-persona-studio.yml 失败原因:[xxx]
② 修复方案:[xxx]
③ 修复 commit[SHA]
④ 修复后运行结果:✅ / ❌
⑤ deploy-to-server.yml 状态:✅ / ❌
⑥ guanghulab.com 是否显示最新内容:✅ / ❌

【结论】:[CD管线已跑通 / 卡在第X步]
【建议】:[xxx]
✅ YM-CD-DEBUG-20260310-002 排查完成 · [YYYY-MM-DD HH:mm]

🔗 关联文档