菜单

CI/CD 流水线

相关源文件

目的与范围

本文档介绍了 Best-websites-a-programmer-should-visit 仓库的持续集成/持续部署 (CI/CD) 流水线。该流水线通过以下方式确保所有贡献的质量控制:

  1. 根据“awesome list”指南验证贡献的格式
  2. 检查 README.md 中的所有链接,确保其可访问性
  3. 自动化质量检查,以维护资源集合的可靠性

该流水线使用 Travis CI 实现,并与 GitHub 拉取请求工作流集成。有关具体链接验证机制的信息,请参阅 链接验证系统

Travis CI 配置概述

CI/CD 流水线在 .travis.yml 文件中配置,该文件定义了构建环境、依赖项和验证步骤。

环境配置

Travis CI 配置指定了

组件描述文件引用
语言Ruby 作为主要语言.travis.yml1
Node.jsNode.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

验证过程

构建流水线流程

验证过程包括按顺序执行的两个主要检查

  1. awesome-lint:根据“awesome list”指南验证 README 格式
  2. awesome_bot:验证 README.md 中的所有链接是否可访问

如果任何一个检查失败,整个构建都会失败,并通过 GitHub 向贡献者提供反馈。

来源: .travis.yml14-16

验证工具详解

awesome-lint

awesome-lint 是一个 Node.js 包,用于根据“awesome list”规范指南验证 Markdown 文件。

关键验证规则

  • 正确的标题结构和层级
  • 列表项的格式一致性
  • 各部分内资源的字母顺序
  • 每个资源的恰当描述
  • 符合样式约定

配置

awesome-lint 检查既在 Travis CI 中配置,也在 package.json 文件中配置,以便进行本地测试

来源: .travis.yml13 .travis.yml15 package.json2-7

awesome_bot

awesome_bot 是一个 Ruby gem,用于检查 Markdown 文件中的死链接。

Travis CI 中的命令

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

与 GitHub 工作流集成

CI/CD 流水线在以下情况自动触发

  1. 创建新的拉取请求时
  2. 更新现有的拉取请求时
  3. 将分支推送到仓库时

这种集成确保贡献在合并到主仓库之前符合质量标准。

来源: .travis.yml14-16

本地测试指南

贡献者可以在提交拉取请求之前在本地运行相同的验证检查

本地运行 awesome-lint

这将执行 Travis CI 将运行的相同格式验证。

来源: package.json2-4

本地运行 awesome_bot

本地测试允许贡献者在提交前识别和修复问题,从而简化贡献流程。

总结

Best-websites-a-programmer-should-visit 仓库的 CI/CD 流水线通过以下方式提供自动化的质量控制

  1. 环境配置:设置 Ruby 和 Node.js 环境
  2. 工具安装:安装 awesome-lint 和 awesome_bot 验证工具
  3. 格式验证:根据 awesome list 指南检查 README 格式
  4. 链接验证:验证所有链接是否可访问
  5. GitHub 集成:为拉取请求提供自动反馈

这种自动化确保了精选的编程资源列表保持高质量和可靠性,同时减轻了维护者的手动审查负担。