Files
nofx/docs/maintainers/SETUP_GUIDE.zh-CN.md
2025-11-01 18:25:44 -04:00

382 lines
9.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 PR 管理系统设置指南
**语言:** [English](SETUP_GUIDE.md) | [中文](SETUP_GUIDE.zh-CN.md)
本指南将帮助你为 NOFX 设置和激活完整的 PR 管理系统。
---
## 📦 包含内容
PR 管理系统包括:
### 1. **文档**
-`CONTRIBUTING.md` - 贡献者指南
-`docs/maintainers/PR_REVIEW_GUIDE.md` - 审核者指南
-`docs/maintainers/PROJECT_MANAGEMENT.md` - 项目管理工作流程
-`docs/maintainers/SETUP_GUIDE.md` - 本文件
### 2. **GitHub 配置**
-`.github/PULL_REQUEST_TEMPLATE.md` - PR 模板(已存在)
-`.github/labels.yml` - 标签定义
-`.github/labeler.yml` - 自动标签规则
-`.github/workflows/pr-checks.yml` - 自动化 PR 检查
### 3. **自动化**
- ✅ 自动 PR 标签
- ✅ PR 大小检查
- ✅ CI/CD 测试
- ✅ 安全扫描
- ✅ Commit 信息验证
---
## 🔧 设置步骤
### 步骤 1同步 GitHub 标签
创建 `.github/labels.yml` 中定义的标签:
```bash
# 选项 1使用 gh CLI推荐
gh label list # 查看当前标签
gh label delete <label-name> # 如需要,删除旧标签
gh label create "priority: critical" --color "d73a4a" --description "Critical priority"
# ... 为 labels.yml 中的所有标签重复
# 选项 2使用 GitHub Labeler Action自动化
# 工作流将在推送时自动同步标签
```
**或使用 GitHub Labeler Action**(添加到 `.github/workflows/sync-labels.yml`
```yaml
name: Sync Labels
on:
push:
branches: [main, dev]
paths:
- '.github/labels.yml'
jobs:
labels:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: crazy-max/ghaction-github-labeler@v5
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
yaml-file: .github/labels.yml
```
### 步骤 2启用 GitHub Actions
1. 前往 **Settings → Actions → General**
2. 启用 **"Allow all actions and reusable workflows"**
3. 设置 **Workflow permissions****"Read and write permissions"**
4. 勾选 **"Allow GitHub Actions to create and approve pull requests"**
### 步骤 3设置分支保护规则
**对于 `main` 分支:**
1. 前往 **Settings → Branches → Add rule**
2. 分支名称模式:`main`
3. 配置:
- ✅ Require a pull request before merging
- ✅ Require approvals: **1**
- ✅ Require status checks to pass before merging
- 选择:`Backend Tests (Go)`
- 选择:`Frontend Tests (React/TypeScript)`
- 选择:`Security Scan`
- ✅ Require conversation resolution before merging
- ✅ Do not allow bypassing the above settings
- ❌ Allow force pushes禁用
- ❌ Allow deletions禁用
**对于 `dev` 分支:**
1. 与上面相同,但:
- Require approvals: **1**
- 宽松一些(如需要允许维护者绕过)
### 步骤 4创建 GitHub Projects
1. 前往 **Projects → New project**
2. 创建 **"NOFX Development"** 看板
- 模板Board
- 添加列:`Backlog``Triaged``In Progress``In Review``Done`
- 添加视图Sprint、Roadmap、By Area、Priority
3. 创建 **"Bounty Program"** 看板
- 模板Board
- 添加列:`Available``Claimed``In Progress``Under Review``Paid`
### 步骤 5启用 Discussions可选但推荐
1. 前往 **Settings → General → Features**
2. 启用 **"Discussions"**
3. 创建分类:
- 💬 **General** - 一般讨论
- 💡 **Ideas** - 功能想法和建议
- 🙏 **Q&A** - 问答
- 📢 **Announcements** - 重要更新
- 🗳️ **Polls** - 社区投票
### 步骤 6配置 Issue 模板
模板已存在于 `.github/ISSUE_TEMPLATE/` 中。验证它们是否正常工作:
1. 前往 **Issues → New issue**
2. 你应该看到:
- 🐛 Bug Report
- ✨ Feature Request
- 💰 Bounty Claim
如果没有显示,检查文件是否为正确格式的 YAML 和 frontmatter。
### 步骤 7设置 Code Owners可选
创建 `.github/CODEOWNERS`
```
# 全局所有者
* @tinkle @zack
# 前端
/web/ @frontend-lead
# 交易所集成
/internal/exchange/ @exchange-lead
# AI 组件
/internal/ai/ @ai-lead
# 文档
/docs/ @tinkle @zack
*.md @tinkle @zack
```
### 步骤 8配置通知
**对于维护者:**
1. 前往 **Settings → Notifications**
2. 启用:
- ✅ Pull request reviews
- ✅ Pull request pushes
- ✅ Comments on issues and PRs
- ✅ New issues
- ✅ Security alerts
3. 设置电子邮件过滤器来组织通知
**对于仓库:**
1. 前往 **Settings → Webhooks**(如果与 Slack/Discord 集成)
2. 添加通知 webhook
---
## 📋 设置后检查清单
设置后,验证:
- [ ] 标签已创建并可见
- [ ] 分支保护规则已激活
- [ ] GitHub Actions 工作流在新 PR 上运行
- [ ] 自动标签工作(创建测试 PR
- [ ] 创建 PR 时显示 PR 模板
- [ ] 创建 issue 时显示 issue 模板
- [ ] Projects 看板可访问
- [ ] CONTRIBUTING.md 在 README 中链接
---
## 🎯 如何使用系统
### 对于贡献者
1. **阅读** [CONTRIBUTING.md](../../../CONTRIBUTING.md)
2. **查看** [路线图](../../roadmap/README.zh-CN.md)了解优先级
3. **开启 issue** 或找到现有的
4. **使用模板创建 PR**
5. **处理审核反馈**
6. **庆祝** 当合并时!🎉
### 对于维护者
1. **每日:** 分类新 issue/PR15分钟
2. **每日:** 审查分配的 PR
3. **每周:** Sprint 计划(周一)和回顾(周五)
4. **遵循:** [PR 审核指南](PR_REVIEW_GUIDE.zh-CN.md)
5. **遵循:** [项目管理指南](PROJECT_MANAGEMENT.zh-CN.md)
### 对于悬赏猎人
1. **查看** 带有 `bounty` 标签的悬赏 issue
2. **通过评论认领** issue
3. **在截止日期前完成**
4. **提交 PR** 并填写悬赏认领部分
5. **合并后获得报酬**
---
## 🔍 测试系统
### 测试 1创建测试 PR
```bash
# 创建测试分支
git checkout -b test/pr-system-check
# 进行小改动
echo "# Test" >> TEST.md
# 提交并推送
git add TEST.md
git commit -m "test: verify PR automation system"
git push origin test/pr-system-check
# 在 GitHub 上创建 PR
# 验证:
# - PR 模板加载
# - 应用了自动标签
# - CI 检查运行
# - 添加了大小标签
```
### 测试 2创建测试 Issue
1. 前往 **Issues → New issue**
2. 选择 **Bug Report**
3. 填写模板
4. 提交
5. 验证:
- 模板正确渲染
- Issue 可以被标签
- Issue 出现在项目看板中
### 测试 3测试自动标签
创建改动不同区域文件的 PR
```bash
# 测试 1前端变更
git checkout -b test/frontend-label
touch web/src/test.tsx
git add . && git commit -m "test: frontend labeling"
git push origin test/frontend-label
# 应该得到 "area: frontend" 标签
# 测试 2后端变更
git checkout -b test/backend-label
touch internal/test.go
git add . && git commit -m "test: backend labeling"
git push origin test/backend-label
# 应该得到 "area: backend" 标签
```
---
## 🐛 故障排除
### 问题:标签未同步
**解决方案:**
```bash
# 首先删除所有现有标签
gh label list --json name --jq '.[].name' | xargs -I {} gh label delete "{}" --yes
# 然后从 labels.yml 手动创建或通过 action 创建
```
### 问题GitHub Actions 未运行
**检查:**
1. 仓库设置中启用了 Actions
2. 工作流文件在 `.github/workflows/`
3. YAML 语法有效
4. 权限设置正确
**调试:**
```bash
# 本地验证工作流
act pull_request # 使用 'act' 工具
```
### 问题:分支保护阻止 PR
**检查:**
1. 必需的检查在工作流中定义
2. 检查名称完全匹配
3. 检查正在完成(没有卡住)
**临时修复:**
- 维护者可以在紧急情况下绕过
- 如果太严格,调整保护规则
### 问题:自动标签器不工作
**检查:**
1. `.github/labeler.yml` 存在且为有效 YAML
2. labeler.yml 中定义的标签在仓库中存在
3. 工作流有 `pull-requests: write` 权限
---
## 📊 监控和维护
### 每周回顾
每周检查这些指标:
```bash
# 使用 gh CLI
gh pr list --state all --json number,createdAt,closedAt
gh issue list --state all --json number,createdAt,closedAt
# 或使用 GitHub Insights
# Repository → Insights → Pulse, Contributors, Traffic
```
### 每月维护
- [ ] 如需要审查和更新标签
- [ ] 检查工作流中的过期依赖
- [ ] 如果流程变更更新 CONTRIBUTING.md
- [ ] 审查自动化效果
- [ ] 收集社区反馈
---
## 🎓 培训资源
### 对于新贡献者
- [首次贡献指南](https://github.com/firstcontributions/first-contributions)
- [如何写 Git Commit 信息](https://chris.beams.io/posts/git-commit/)
- [Conventional Commits](https://www.conventionalcommits.org/)
### 对于维护者
- [代码审核的艺术](https://google.github.io/eng-practices/review/)
- [GitHub 项目管理](https://docs.github.com/en/issues/planning-and-tracking-with-projects)
- [维护者社区](https://maintainers.github.com/)
---
## 🎉 一切就绪!
PR 管理系统现在已准备好:
✅ 用清晰的指南引导贡献者
✅ 自动化重复任务
✅ 保持代码质量
✅ 系统性地跟踪进度
✅ 扩展社区
**有问题?** 在维护者频道联系我们或开启讨论。
**让我们构建令人惊叹的社区!🚀**