--- belongs_to: - "[[INDEX · 铸渊·协作指令|GitHub ↔ Notion 桥接协议]]" --- # 🔧 铸渊排查指令|CD自动部署全链路诊断(霜砚签发·2026-03-10) --- ## 🎯 排查目标 **确认 CD 自动部署管线(push to main → [guanghulab.com](http://guanghulab.com) 自动更新)是否跑通。如果没跑通,定位卡在哪一步。** --- ## 📋 排查清单(逐项执行·逐项回报) ### 第一步:确认工作流文件是否在 main 分支上 ```bash 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.yml` 的 `on.push` 配置: ```yaml 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` 是否正确?(服务器上这个路径是否存在?) ### 第六步:手动触发一次测试 如果工作流文件存在且配置正确: ```bash # 方法一:在仓库 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:50,Actions 页面显示 1,071 次工作流运行。**失败的全部是同一个 workflow:`sync-persona-studio.yml`**,包括: - `#85` — 合并 PR #47(fix-api-input-is)后触发失败 - `#84` — 合并 PR #49(fix-model-intera)后触发失败 - `#83` `#82` — 合并 PR #50(fix-api-response)后触发失败 - `#81` — 合并远程更新并添加钉钉Phase1模块后失败 - `#80` — 合并 PR #51(debug-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] ``` --- ## 🔗 关联文档 - CD 部署指令原文:[🚀 铸渊 CD 指令:自动部署 [guanghulab.com](http://guanghulab.com)(push → 自动上线)](%F0%9F%9A%80%20%E9%93%B8%E6%B8%8A%20CD%20%E6%8C%87%E4%BB%A4%EF%BC%9A%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2%20guanghulab%20com%EF%BC%88push%20%E2%86%92%20%E8%87%AA%E5%8A%A8%E4%B8%8A%E7%BA%BF%EF%BC%89%20905ba98cce9c4bb3b812d9f7e9d1f35c.md) - 全仓库模块盘点:[📦 铸渊指令:全仓库模块盘点 + 部署感知同步(霜砚签发·2026-03-07)](%F0%9F%93%A6%20%E9%93%B8%E6%B8%8A%E6%8C%87%E4%BB%A4%EF%BC%9A%E5%85%A8%E4%BB%93%E5%BA%93%E6%A8%A1%E5%9D%97%E7%9B%98%E7%82%B9%20+%20%E9%83%A8%E7%BD%B2%E6%84%9F%E7%9F%A5%E5%90%8C%E6%AD%A5%EF%BC%88%E9%9C%9C%E7%A0%9A%E7%AD%BE%E5%8F%91%C2%B72026-03-07%EF%BC%89%204c116ef0963c4dc7b0d5c55327d3608e.md) - 修复部署指令:[🚀 铸渊指令:修复部署 → 全模块上线 [guanghulab.com](http://guanghulab.com)(霜砚签发·2026-03-07)](%F0%9F%9A%80%20%E9%93%B8%E6%B8%8A%E6%8C%87%E4%BB%A4%EF%BC%9A%E4%BF%AE%E5%A4%8D%E9%83%A8%E7%BD%B2%20%E2%86%92%20%E5%85%A8%E6%A8%A1%E5%9D%97%E4%B8%8A%E7%BA%BF%20guanghulab%20com%EF%BC%88%E9%9C%9C%E7%A0%9A%E7%AD%BE%E5%8F%91%C2%B72026-03-07%207ea69ab50bd94be6bad31f6b8755bb39.md) - 后端服务启动指令:[🔧 铸渊指令:启动后端服务 → 看板动态数据上线(霜砚签发·2026-03-07)](%F0%9F%94%A7%20%E9%93%B8%E6%B8%8A%E6%8C%87%E4%BB%A4%EF%BC%9A%E5%90%AF%E5%8A%A8%E5%90%8E%E7%AB%AF%E6%9C%8D%E5%8A%A1%20%E2%86%92%20%E7%9C%8B%E6%9D%BF%E5%8A%A8%E6%80%81%E6%95%B0%E6%8D%AE%E4%B8%8A%E7%BA%BF%EF%BC%88%E9%9C%9C%E7%A0%9A%E7%AD%BE%E5%8F%91%C2%B72026-03-07%EF%BC%89%2027c217cf3f3d482b9149f681f76ab15b.md)