Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
209 lines
8.3 KiB
Markdown
209 lines
8.3 KiB
Markdown
---
|
||
belongs_to:
|
||
- "[[INDEX · 铸渊·协作指令|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) |