本文档详细介绍了在 HowToCook 仓库中提交和处理 Pull Request (PR) 的端到端流程。它涵盖了 PR 提交工作流程、自动化检查、审查流程以及 PR 合并后会发生什么。有关质量控制机制和特定 lint 规则的信息,请参阅质量控制。
HowToCook 仓库采用标准化的 Pull Request 流程,以确保所有贡献都保持一致的质量和格式。此流程包括验证格式规则的自动化检查、许可协议要求以及人工审查阶段。
拉取请求工作流程
来源: .github/pull_request_template.md1-15 .github/workflows/ci.yml1-18 .github/workflows/build.yml1-49
在为 HowToCook 仓库贡献内容创建 Pull Request 时,您需要遵循以下指南
当您创建 PR 时,会自动应用一个模板,其中包含您必须完成的重要复选框
## 注意
Pull Request 提交后,预计 1 分钟内将会得到自动化格式检查的结果。只有通过自动化检查的 Pull Request 才会被人工审核。
- [ ] 请确保此 Pull Request 能够通过自动化代码检查。
## 签署
必须签署下面的对话框才能开始审核。
### HowToCook 仓库采用了 [The Unlicense](https://unlicense.org/) 协议
菜谱在签入前,必须确保其可以**直接声明进入 "公共领域"(public domain)**。这意味着一旦合并后,任何人都**可以**自由复制,修改,发布,使用,编译,出售或以菜谱的形式或菜的形式分发,**无论**是出于**商业目的**还是**非商目的**,以及**任何**手段。
- [ ] 我确保了我的内容不涉及版权内容,并且授权它 The Unlicense 协议。
此模板要求您
来源: .github/pull_request_template.md1-15
HowToCook 仓库使用The Unlicense,它有效地将所有贡献都置于公共领域。通过选中 PR 模板中的复选框,您确认
来源: .github/pull_request_template.md11-15
提交 PR 后,GitHub Actions 将自动触发 .github/workflows/ci.yml 中定义的持续集成 (CI) 工作流。此工作流执行多项自动化检查,以确保您的贡献符合仓库的质量标准。
CI 工作流流程
来源: .github/workflows/ci.yml1-18 package.json16-22
npm run lint 命令运行三个独立的 linting 工具
textlint: 检查与文本相关的格式问题
markdownlint: 验证 markdown 格式
.markdownlint.json 中定义的规则manuallint: 自定义 linting 脚本
来源: package.json16-22 .markdownlint.json1-8
如果您的 PR 未通过自动化检查,您需要
在所有自动化检查通过之前,PR 将不会进入人工审查阶段。
来源: .github/pull_request_template.md1-5 .github/workflows/ci.yml1-18
在您的 PR 通过所有自动化检查后,它将由仓库维护者进行审查。这次人工审查确保您的贡献达到了自动化检查无法验证的质量标准。
虽然具体标准可能因您的贡献性质而异,但审查者通常会关注
审查者可能会提供反馈,要求更改您的 PR。如果发生这种情况
这个循环可能会重复,直到审查者对您的贡献满意为止。
获得批准后,仓库维护者会将您的 PR 合并到 master 分支。此操作将触发持续部署 (CD) 工作流。
当 PR 合并到 master 分支时,它会触发 .github/workflows/build.yml 中定义的 CD 工作流。此工作流更新仓库的文档并部署更改。
CD 工作流流程
来源: .github/workflows/build.yml1-49
CD 工作流运行 npm run build 命令,该命令执行 .github/readme-generate.js。此脚本
更新文档后,工作流
ghcr.io/anduin2017/how-to-cook:latest来源: .github/workflows/build.yml32-49
以下是 PR 过程中常见的问题及其解决方法
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| Lint 失败 | 格式不正确、缺少章节、测量不当 | 检查 CI 日志以获取具体错误,并根据仓库标准进行修复 |
| 缺少复选框确认 | 忘记勾选 Unlicense 协议框 | 编辑 PR 描述并勾选所需复选框 |
| 审查后请求更改 | 内容需要改进或不符合指南 | 处理审查者意见并更新您的 PR |
| 合并冲突 | 自创建分支以来,master 分支已发生更改 | rebase 或将 master 合并到您的分支以解决冲突 |
来源: .github/pull_request_template.md1-15 .github/workflows/ci.yml1-18
您可以通过以下方式监控您的 PR 状态
一旦您的 PR 被合并,您可以通过检查以下内容来验证您的更改是否已成功部署