菜单

CI/CD 工作流

相关源文件

目的与范围

本文档描述了 GitHub Readme Stats 项目中实现的持续集成和持续部署 (CI/CD) 工作流程。这些自动化工作流程可确保代码质量、维护文档、管理拉取请求和处理安全分析。它们在简化开发流程和维护项目健康方面起着至关重要的作用。

有关设置开发环境的信息,请参阅 开发环境设置。有关测试系统本身的信息,请参阅 测试系统

CI/CD 工作流程概述

GitHub Readme Stats 项目实现了多个 GitHub Actions 工作流程,以自动化开发过程的各个方面。

来源:.github/workflows/test.yml .github/workflows/generate-theme-doc.yml

测试工作流

主测试工作流

主要的测试工作流程(test.yml)会在拉取请求和推送到主分支时自动运行。

该工作流程执行以下步骤

  1. 设置 Node.js 18.x 环境
  2. 使用 npm ci 安装依赖项
  3. 运行单元测试
  4. 使用 ESLint 进行代码 linting
  5. 运行基准测试
  6. 使用 Prettier 检查代码格式
  7. 将代码覆盖率报告上传到 Codecov

来源:.github/workflows/test.yml10-47

端到端测试

该项目还通过 e2e-test.yml 工作流程实现了端到端测试,该工作流程测试已部署的预览环境,以确保功能在实际环境中按预期运行。

文档更新工作流程

主题文档生成器

generate-theme-doc.yml 工作流程会在主题定义文件发生更改时自动更新主题文档。

此工作流:

  1. 在主分支中修改 themes/index.js 文件时触发
  2. 设置 Node.js 18.x 环境
  3. 安装依赖项
  4. 生成更新的主题文档
  5. 提交并推送更新的文档

此自动化可确保主题文档始终与代码库中实际可用的主题同步。

来源:.github/workflows/generate-theme-doc.yml1-59

语言数据更新程序

update-langs.yml 工作流程会自动更新“热门语言”卡使用的语言数据和颜色。这确保了语言信息与 GitHub 支持的语言保持同步。

PR 管理工作流程

主题预览工作流程

preview-theme.yml 工作流程通过以下方式帮助主题贡献过程:

  1. 验证提交的主题是否具有正确的格式和命名
  2. 生成主题应用于不同卡片的预览图像
  3. 将预览添加为 PR 的评论
  4. 根据验证结果应用适当的标签

此工作流程简化了维护者对主题的审查,并为贡献者提供了即时视觉反馈。

PR 标签器

label-pr.yml 工作流程会根据修改的文件自动为拉取请求应用标签。这有助于组织和优先处理贡献。

过时主题 PR 关闭程序

stale-theme-pr-closer.yml 工作流程会识别并关闭未满足所需验证标准且在规定时间内未更新的主题拉取请求。

来源:.github/workflows/generate-theme-doc.yml22-59

问题管理工作流程

热门问题仪表板

top-issues-dashboard.yml 工作流程会定期生成热门问题仪表板,帮助维护者和贡献者识别需要改进的优先领域。

安全工作流程

安全分析

ossf-analysis.yml 工作流程运行开源安全基金会 (OSSF) Scorecard 分析,以识别安全漏洞和最佳实践违规。这有助于通过主动识别潜在的安全问题来维护安全的代码库。

CI/CD 基础设施集成

下图说明了 CI/CD 工作流程如何与 GitHub Readme Stats 基础设施的其他部分集成

来源:.github/workflows/test.yml .github/workflows/generate-theme-doc.yml

CI/CD 工作流程执行流程

下图显示了项目中 CI/CD 工作流程的典型执行流程

来源:.github/workflows/test.yml .github/workflows/generate-theme-doc.yml

总结

GitHub Readme Stats 中的 CI/CD 工作流程提供

  1. 质量保证 - 通过自动化测试、linting 和格式检查
  2. 文档维护 - 通过自动生成和更新文档
  3. 贡献管理 - 通过自动化的 PR 标签、主题预览和过时 PR 处理
  4. 安全监控 - 通过运行安全分析工具

这些工作流程减少了手动工作,保持了代码质量的一致性,并简化了贡献流程,使项目更具可持续性,对新贡献者更易于访问。

来源:.github/workflows/test.yml .github/workflows/generate-theme-doc.yml