--- belongs_to: - "[[INDEX · 铸渊·协作指令|GitHub ↔ Notion 桥接协议]]" --- # 🔧 铸渊指令:配置小草莓 GitHub 权限 + 协同调试 CD 打通(霜砚签发·2026-03-07) --- ## 🎯 目标 ``` 目标一:给小草莓配好 GitHub 仓库操作权限 目标二:与小草莓协同调试,打通 CD 管线 目标三:达到终态 → push 到 main → guanghulab.com 自动更新 ``` --- ## 📋 铸渊执行清单(读到就做·不等人) ``` 铸渊权限配置 + 协同调试指令 · YM-COLLAB-20260307-001 来源:霜砚(Notion执行体)→ 铸渊(GitHub执行体) 时间:2026-03-07 状态:P0 · 立即执行 ━━━ 任务一:确认小草莓的 GitHub 合作者权限 ━━━ 妈妈已经把小草莓加到 qinfendebingshuo/guanghulab 仓库了。 铸渊需要确认并配置: ① 检查小草莓的权限等级: · 进入仓库 Settings → Collaborators · 确认小草莓的权限是 Write 或 Admin · 如果是 Read → 提升到 Write · Write 权限允许:push 代码、管理 branches、查看 Actions ② 确保小草莓可以操作以下功能: · ✅ push 代码到 main 分支 · ✅ 查看和触发 GitHub Actions · ✅ 查看和修改 Repository Secrets(需要 Admin 或仓库 owner 授权) · ✅ 修改分支保护规则(需要 Admin) · ✅ 查看 Actions 运行日志 ③ 如果小草莓需要修改 Secrets 但权限不够: · 方案A:提升小草莓到 Admin(最简单) · 方案B:铸渊代为修改 Secrets(小草莓告诉铸渊要改什么值) · 推荐方案A,因为小草莓需要独立排查 ━━━ 任务二:检查并修复分支保护规则 ━━━ 上次记录显示 PR 合并被分支保护规则阻止。 这可能是 CD 没打通的原因之一。 ① 检查 main 分支保护规则: Settings → Branches → Branch protection rules ② 当前需要的配置: · 允许直接 push 到 main(暂时关闭 "Require pull request reviews") · 或者:允许 Actions bot 自动部署(保留 PR 要求但 allow bypass) · 建议暂时关闭所有保护规则,等 CD 调通后再加回来 ③ 如果有 required status checks → 确认 deploy-to-server workflow 不在 required 列表里(避免死循环) ━━━ 任务三:检查 deploy-to-server.yml 当前状态 ━━━ 铸渊自查 deploy-to-server.yml: ① rsync 同步源路径: · 应该是 ./ (整个仓库根目录) · 如果还是 docs/ → 改过来 ② rsync 排除规则: · 应排除:.git、.github、node_modules、syslog-inbox、syslog-processed、broadcasts-outbox、scripts、tests、reports、dev-nodes、signal-log · 不应排除:status-board、app、backend、src、m**-模块目录 ③ DEPLOY_PATH Secret: · 应该是 /var/www/guanghulab/(或者 Nginx root 指向的目录) · 不应该是 /var/www/guanghulab/status-board/(太窄) · 不应该是 /var/www/hololake-frontend/(旧路径) ④ DEPLOY_KEY Secret: · 确认私钥格式正确(完整的 -----BEGIN OPENSSH PRIVATE KEY----- 到 -----END-----) · 如果不确定 → 等小草莓从服务器端确认 authorized_keys 后配合对照 ━━━ 任务四:与小草莓协同调试 ━━━ 小草莓会从服务器端排查(SSH登录、Nginx配置、文件路径)。 铸渊从 GitHub 端排查(Actions日志、Secrets配置、Workflow文件)。 两边同时查,交叉验证。 协同方式: · 小草莓在服务器端检查 → 发现路径/密钥问题 → 告诉铸渊 · 铸渊在 GitHub 端修改 Secrets/Workflow → 触发测试 → 看结果 · 循环直到打通 铸渊需要配合小草莓做的事: ① 如果小草莓发现 authorized_keys 里没有对应密钥: → 小草莓在服务器生成新密钥对 → 小草莓把私钥内容发给铸渊 → 铸渊更新 DEPLOY_KEY Secret ② 如果小草莓发现 Nginx root 路径和 DEPLOY_PATH 不一致: → 铸渊更新 DEPLOY_PATH Secret 为正确路径 ③ 如果小草莓发现 rsync 同步的文件不对: → 铸渊修改 deploy-to-server.yml 的 rsync 参数 ④ 每次修改后,铸渊手动触发一次 workflow_dispatch 测试: → 在 Actions 页面点 "Run workflow" → 等运行完成 → 检查每个 Job 的日志 → 把结果告诉小草莓 ━━━ 任务五:添加后端自动重启步骤 ━━━ CD 打通后,在 deploy-to-server.yml 的 deploy job 里追加: - name: Restart backend service uses: appleboy/ssh-action@v1 with: host: $ secrets.DEPLOY_HOST username: $ secrets.DEPLOY_USER key: $ secrets.DEPLOY_KEY script: | cd /var/www/guanghulab/backend if [ -f "package.json" ]; then npm install --production 2>/dev/null || true pm2 restart guanghulab-backend 2>/dev/null || pm2 start server.js --name guanghulab-backend pm2 save echo "✅ 后端服务已重启" else echo "⚠️ backend/package.json 不存在,跳过后端重启" fi 这样每次 push 不仅前端更新,后端也自动重启。 ━━━ 任务六:最终端到端验证 ━━━ 与小草莓一起做最终验证: ① 铸渊在仓库里做一个小改动(比如改 status-board/index.html 加注释) ② push 到 main ③ 观察 Actions 运行:validate → deploy → notify 三个 Job 全 ✅ ④ 小草莓在浏览器刷新 guanghulab.com 确认看到变化 ⑤ 如果看到变化 → CD 打通 ✅ ⑥ 如果没变化 → 小草莓 SSH 到服务器检查文件时间戳: ls -la /var/www/guanghulab/status-board/index.html 看文件修改时间是不是刚才的 ━━━ 验收标准 ━━━ · 小草莓的 GitHub 权限:Write 或 Admin · 分支保护规则:不阻止 push 到 main · deploy-to-server.yml:rsync 同步整个仓库(非仅 docs/) · GitHub Secrets:DEPLOY_HOST/USER/KEY/PATH 全部正确 · SSH 连接:Actions 能成功 SSH 到服务器 · 端到端测试:push → 60秒内网站自动更新 · 后端重启步骤:已添加到 workflow · 小草莓能独立操作仓库(push、查看 Actions、触发 workflow) ━━━ 执行确认 ━━━ 铸渊完成后回复: ✅ YM-COLLAB-20260307-001 已完成 · 小草莓 GitHub 权限:Write / Admin · 分支保护规则:已调整 / 无需调整 · deploy-to-server.yml 修改:有 / 无 · Secrets 修改:有 / 无 · SSH 连接测试:成功 / 失败 · 端到端测试:push → 网站更新 ✅ / ❌ · 后端重启步骤:已添加 / 待添加 · commit SHA:xxxxxx ``` --- ## 📝 妈妈操作指南 --- ## 🔗 关联文档 - 铸渊协作指令主页:[⚒️ 铸渊·协作指令|GitHub ↔ Notion 桥接协议](../%E2%9A%92%EF%B8%8F%20%E9%93%B8%E6%B8%8A%C2%B7%E5%8D%8F%E4%BD%9C%E6%8C%87%E4%BB%A4%EF%BD%9CGitHub%20%E2%86%94%20Notion%20%E6%A1%A5%E6%8E%A5%E5%8D%8F%E8%AE%AE%201e27db07f7884441bf4ca6c931cadab9.md) - 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) - 全模块部署指令:[🚀 铸渊指令:修复部署 → 全模块上线 [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) - 小草莓排查广播:BC-部署-002-XCM(本指令的配对广播) - 仓库:[https://github.com/qinfendebingshuo/guanghulab](https://github.com/qinfendebingshuo/guanghulab)