GitHub 自动化操作
功能说明
此技能专门用于自动化 GitHub 平台的各种操作,包括:
- 仓库管理和文件操作
- Pull Request 创建和审查
- Issue 管理和追踪
- 分支管理和合并
- CI/CD 工作流自动化
- 代码搜索和分析
使用场景
- "创建一个新的 GitHub 仓库"
- "提交代码并创建 Pull Request"
- "批量处理 GitHub Issues"
- "自动化代码审查流程"
- "搜索代码库中的特定代码"
- "管理 GitHub Actions 工作流"
核心功能模块
1. 仓库管理
- 创建仓库:创建新的公开或私有仓库
- Fork 仓库:Fork 其他仓库到自己账户
- 搜索仓库:按关键词搜索仓库
- 文件操作:读取、创建、更新文件
- 批量提交:一次提交多个文件
2. Pull Request 管理
- 创建 PR:从分支创建 Pull Request
- 审查 PR:添加评论和审查意见
- 合并 PR:合并 Pull Request
- 查看变更:获取 PR 的文件变更
- 状态检查:查看 CI/CD 状态
3. Issue 管理
- 创建 Issue:创建新的问题或任务
- 更新 Issue:修改状态、标签、负责人
- 搜索 Issue:按条件筛选 Issue
- 添加评论:在 Issue 中添加讨论
- 批量操作:批量处理多个 Issue
4. 分支管理
- 创建分支:从指定分支创建新分支
- 查看提交:列出分支的提交历史
- 分支保护:配置分支保护规则
- 合并策略:选择合并方式(merge、squash、rebase)
5. 代码搜索
- 搜索代码:在仓库中搜索代码片段
- 搜索 Issue:搜索问题和 PR
- 搜索用户:查找 GitHub 用户
- 高级查询:使用 GitHub 搜索语法
工作流程
标准开发流程
- 创建分支:从 main 创建功能分支
- 开发代码:编写和测试代码
- 提交变更:提交文件到分支
- 创建 PR:创建 Pull Request
- 代码审查:团队审查代码
- 合并代码:合并到主分支
自动化发布流程
- 监听事件:监听 push 或 tag 事件
- 运行测试:执行自动化测试
- 构建项目:编译和打包
- 创建 Release:发布新版本
- 部署应用:自动部署到生产环境
Issue 管理流程
- 创建 Issue:报告问题或需求
- 分配任务:指定负责人
- 添加标签:分类和优先级
- 跟踪进度:更新状态
- 关闭 Issue:完成后关闭
最佳实践
提交规范
- 使用清晰的提交信息
- 遵循 Conventional Commits 规范
- 一次提交解决一个问题
- 包含必要的测试和文档
PR 规范
- 提供详细的 PR 描述
- 关联相关的 Issue
- 确保 CI 检查通过
- 及时响应审查意见
- 保持 PR 大小适中
分支策略
- 使用 Git Flow 或 GitHub Flow
- 保护主分支
- 定期同步上游分支
- 及时删除已合并的分支
安全实践
- 不提交敏感信息
- 使用 GitHub Secrets 管理密钥
- 启用双因素认证
- 定期审查权限设置
常用代码示例
1. 创建仓库并提交文件
// 创建仓库
const repo = await createRepository({
name: "my-project",
description: "项目描述",
private: false,
autoInit: true
});
// 批量提交文件
await pushFiles({
owner: "username",
repo: "my-project",
branch: "main",
files: [
{
path: "README.md",
content: "# My Project\n\n项目说明"
},
{
path: "src/index.js",
content: "console.log('Hello World');"
}
],
message: "Initial commit"
});
2. 创建分支和 Pull Request
// 创建新分支
await createBranch({
owner: "username",
repo: "my-project",
branch: "feature/new-feature",
from_branch: "main"
});
// 提交代码到新分支
await createOrUpdateFile({
owner: "username",
repo: "my-project",
path: "src/feature.js",
content: "// 新功能代码",
message: "Add new feature",
branch: "feature/new-feature"
});
// 创建 Pull Request
await createPullRequest({
owner: "username",
repo: "my-project",
title: "添加新功能",
head: "feature/new-feature",
base: "main",
body: "## 变更说明\n- 添加了新功能\n- 更新了文档"
});
3. Issue 管理
// 创建 Issue
const issue = await createIssue({
owner: "username",
repo: "my-project",
title: "修复登录问题",
body: "## 问题描述\n用户无法登录\n\n## 复现步骤\n1. 打开登录页面\n2. 输入凭证\n3. 点击登录",
labels: ["bug", "high-priority"],
assignees: ["developer1"]
});
// 添加评论
await addIssueComment({
owner: "username",
repo: "my-project",
issue_number: issue.number,
body: "正在调查此问题"
});
// 更新 Issue
await updateIssue({
owner: "username",
repo: "my-project",
issue_number: issue.number,
state: "closed",
labels: ["bug", "fixed"]
});
4. 代码审查
// 获取 PR 详情
const pr = await getPullRequest({
owner: "username",
repo: "my-project",
pull_number: 123
});
// 获取 PR 文件变更
const files = await getPullRequestFiles({
owner: "username",
repo: "my-project",
pull_number: 123
});
// 创建审查
await createPullRequestReview({
owner: "username",
repo: "my-project",
pull_number: 123,
body: "代码看起来不错,有几点建议",
event: "COMMENT",
comments: [
{
path: "src/index.js",
line: 10,
body: "建议添加错误处理"
}
]
});
// 合并 PR
await mergePullRequest({
owner: "username",
repo: "my-project",
pull_number: 123,
merge_method: "squash",
commit_title: "feat: 添加新功能"
});
5. 搜索和查询
// 搜索代码
const codeResults = await searchCode({
q: "function login repo:username/my-project"
});
// 搜索 Issue
const issueResults = await searchIssues({
q: "is:open label:bug repo:username/my-project",
sort: "created",
order: "desc"
});
// 搜索仓库
const repoResults = await searchRepositories({
query: "react stars:>1000 language:javascript"
});
GitHub Actions 集成
自动化测试
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run tests
run: npm test
自动化部署
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Deploy
run: ./deploy.sh
集成场景
1. 自动化代码审查
- 监听 PR 创建事件
- 运行代码质量检查
- 自动添加审查评论
- 标记需要改进的地方
2. Issue 自动分类
- 监听 Issue 创建
- 分析 Issue 内容
- 自动添加标签
- 分配给合适的人员
3. 发布管理
- 监听版本标签
- 生成变更日志
- 创建 GitHub Release
- 通知团队成员
4. 依赖更新
- 定期检查依赖更新
- 创建更新 PR
- 运行测试验证
- 自动合并安全更新
注意事项
- 遵守 GitHub API 速率限制
- 使用 Personal Access Token 认证
- 正确处理 API 错误和重试
- 保护敏感信息和密钥
- 遵循开源项目贡献指南