本文档描述了 HowToCook 存储库的持续集成 (CI) 和持续部署 (CD) 流水线。该流水线自动验证食谱质量,强制执行格式标准,生成文档,并将食谱集作为 Docker 容器发布。有关贡献工作流的信息,请参阅 贡献工作流;有关 Docker 部署的信息,请参阅 Docker 部署。
HowToCook CI/CD 系统采用 GitHub Actions 来自动化测试和部署流程,确保所有食谱贡献的一致质量。
来源: .github/workflows/ci.yml1-18 .github/workflows/build.yml1-49 package.json16-22
CI 流水线在每次针对 master 分支打开拉取请求时自动运行。其主要目的是在接受食谱贡献之前验证其质量和格式。
来源: .github/workflows/ci.yml1-18 package.json16-22
CI 流水线定义在 .github/workflows/ci.yml 中,包含以下关键组件:
| 组件 | 描述 |
|---|---|
| 触发器 | 拉取请求到 master 分支 |
| 环境 | Ubuntu 最新版 |
| Node.js 版本 | 22 |
| 主要步骤 | 检出代码,安装依赖,运行 lint 检查 |
npm run lint 命令执行 package.json 文件中定义的一系列检查。
来源: package.json17-21 .markdownlint.json1-8
CD 流水线在 master 分支有代码推送时自动执行,通常是在拉取请求合并后。它包含两个顺序执行的作业:
来源: .github/workflows/build.yml1-49 package.json16-22
CD 流水线中的第一个作业负责生成和更新文档。
npm run build)执行 .github/readme-generate.js 来更新:来源: .github/workflows/build.yml8-30 package.json17
CD 流水线中的第二个作业构建并发布 Docker 镜像。
ghcr.io/anduin2017/how-to-cook:latest。来源: .github/workflows/build.yml32-49
以下序列图说明了从贡献到部署的整个 CI/CD 过程。
来源: .github/workflows/ci.yml1-18 .github/workflows/build.yml1-49
CI/CD 流水线与 HowToCook 存储库中的其他系统集成。
来源: .github/workflows/build.yml1-49 package.json16-22
| 系统 | 与 CI/CD 集成 |
|---|---|
| 食谱内容系统 | CI 验证食谱的格式和内容结构。 |
| 文档系统 | CD 触发 README 生成并更新难度评级。 |
| 网页界面 | CD 构建并发布提供食谱集服务的 Docker 镜像。 |
CI/CD 流水线依赖于 package.json 文件中定义的多个自动化脚本:
| 脚本 | 命令 | 目的 |
|---|---|---|
| build | node ./.github/readme-generate.js | 生成 README 并更新评分。 |
| manuallint | node .github/manual_lint.js | 执行自定义食谱验证。 |
| textlint | textlint . --fix | 检查和修复文本格式问题。 |
| markdownlint | markdownlint ./dishes ./tips | 验证 markdown 格式。 |
| lint | 按顺序运行所有 lint 脚本。 | 全面的质量检查。 |
多个配置文件控制着 CI/CD 流水线的行为:
| 文件 | 目的 |
|---|---|
| .github/workflows/ci.yml | 定义 CI 工作流程。 |
| .github/workflows/build.yml | 定义 CD 工作流程。 |
| .markdownlint.json | 配置 markdown linting 规则。 |
| package.json | 定义脚本命令和依赖。 |
来源: .github/workflows/ci.yml1-18 .github/workflows/build.yml1-49 .markdownlint.json1-8 package.json1-39
HowToCook CI/CD 流水线提供了自动化的验证、文档生成和部署,确保:
这种自动化使项目能够在最大限度地减少手动干预的同时保持高质量标准,从而使贡献者能够专注于食谱内容而不是基础设施维护。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(d608f0)