本文档介绍了 Best-websites-a-programmer-should-visit 仓库的持续集成/持续部署 (CI/CD) 流水线。该流水线通过以下方式确保所有贡献的质量控制:
该流水线使用 Travis CI 实现,并与 GitHub 拉取请求工作流集成。有关具体链接验证机制的信息,请参阅 链接验证系统。
CI/CD 流水线在 .travis.yml 文件中配置,该文件定义了构建环境、依赖项和验证步骤。
Travis CI 配置指定了
| 组件 | 描述 | 文件引用 |
|---|---|---|
| 语言 | Ruby 作为主要语言 | .travis.yml1 |
| Node.js | Node.js 运行时 (当前版本) | .travis.yml2-3 |
| Ruby 版本 | Ruby v2.2 | .travis.yml4-5 |
| Node 版本 | Node.js v7,通过环境变量 | .travis.yml6-7 |
来源: .travis.yml1-7
Travis CI 在运行测试之前执行多个设置步骤
| 步骤 | 命令/操作 | 文件引用 |
|---|---|---|
| NVM 设置 | 安装 Node 版本管理器 | .travis.yml9 |
| 依赖项 | 安装 npm 依赖项 | .travis.yml10 |
| awesome_bot | 安装用于链接检查的 Ruby gem | .travis.yml12 |
| awesome-lint | 安装用于格式验证的全局包 | .travis.yml13 |
来源: .travis.yml8-13
验证过程包括按顺序执行的两个主要检查
如果任何一个检查失败,整个构建都会失败,并通过 GitHub 向贡献者提供反馈。
来源: .travis.yml14-16
awesome-lint 是一个 Node.js 包,用于根据“awesome list”规范指南验证 Markdown 文件。
awesome-lint 检查既在 Travis CI 中配置,也在 package.json 文件中配置,以便进行本地测试
来源: .travis.yml13 .travis.yml15 package.json2-7
awesome_bot 是一个 Ruby gem,用于检查 Markdown 文件中的死链接。
awesome_bot README.md --white-list $(paste -d, -s white_listed_sites.txt) --allow-ssl --allow-redirect
| 参数 | 描述 |
|---|---|
| README.md | 要检查的目标文件 |
| --white-list | 排除 white_listed_sites.txt 中列出的站点 |
| --allow-ssl | 允许 SSL 连接 |
| --allow-redirect | 允许重定向链接 |
来源: .travis.yml12 .travis.yml16
CI/CD 流水线在以下情况自动触发
这种集成确保贡献在合并到主仓库之前符合质量标准。
来源: .travis.yml14-16
贡献者可以在提交拉取请求之前在本地运行相同的验证检查
这将执行 Travis CI 将运行的相同格式验证。
来源: package.json2-4
本地测试允许贡献者在提交前识别和修复问题,从而简化贡献流程。
Best-websites-a-programmer-should-visit 仓库的 CI/CD 流水线通过以下方式提供自动化的质量控制
这种自动化确保了精选的编程资源列表保持高质量和可靠性,同时减轻了维护者的手动审查负担。