---
belongs_to:
  - "[[⚒️ 铸渊·协作指令｜GitHub ↔ Notion 桥接协议]]"
---
# 🔧 铸渊指令：配置小草莓 GitHub 权限 + 协同调试 CD 打通（霜砚签发·2026-03-07）

<aside>
🔧

**铸渊立即执行** · 霜砚签发 · 2026-03-07

**优先级**：P0 · 立即执行

**背景**：妈妈已把 DEV-005 小草莓加到 GitHub 仓库合作者里了。铸渊需要配置小草莓的权限，并与小草莓协同调试，一直到 CD 自动部署管线完全打通为止。

</aside>

---

## 🎯 目标

```
目标一：给小草莓配好 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
```

---

## 📝 妈妈操作指南

<aside>
👆

**妈妈你只需要做一件事：**

1. 复制上面代码框里的全部内容
2. 粘贴给铸渊
3. 等铸渊和小草莓协同调试完成
4. 截图发给霜砚
</aside>

---

## 🔗 关联文档

- 铸渊协作指令主页：[⚒️ 铸渊·协作指令｜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)