菜单

GitHub Actions

相关源文件

本页介绍了 GitHub Readme Stats 项目中实现的 GitHub Actions 工作流。这些工作流可自动执行测试、验证、文档生成和其他关键的 CI/CD 流程。有关问题和 PR 管理自动化的信息,请参阅 问题和 PR 管理

概述

GitHub Readme Stats 利用 GitHub Actions 自动化各种开发工作流,以确保代码质量并维护文档。这些工作流会在特定触发器(例如推送到 master 分支或创建拉取请求)上自动运行。

来源: .github/workflows/test.yml2-8 .github/workflows/generate-theme-doc.yml2-7

工作流权限

此项目中的 GitHub Actions 工作流遵循最小权限原则,使用受限的权限。大多数工作流都以只读权限开始,仅在需要时授予特定的写入权限。

例如,主题文档工作流需要对存储库内容具有写入访问权限

来源: .github/workflows/test.yml10 .github/workflows/generate-theme-doc.yml9-21

测试工作流

主要的测试工作流在每次代码推送到 master 分支或创建针对 master 的拉取请求时运行。

此工作流执行全面的质量检查套件

  1. 单元测试:通过 npm run test 运行 Jest 测试套件
  2. 代码检查:使用 ESLint 通过 npm run lint 验证代码风格
  3. 基准测试:通过 npm run bench 检查性能
  4. 代码格式化:确保使用 Prettier 进行一致的代码格式化
  5. 代码覆盖率:将测试覆盖率报告上传到 Codecov

该工作流在 Ubuntu 上使用 Node.js 18.x 运行。

来源: .github/workflows/test.yml1-48

主题文档工作流

当主题定义文件发生修改时,此工作流会自动生成更新的主题文档。

工作流

  1. 仅当 master 分支中的 themes/index.js 文件发生修改时触发
  2. 设置 Node.js 18.x 环境
  3. 修复潜在的 Git 存储库安全问题
  4. 安装依赖项
  5. 使用 theme-readme-gen 脚本生成主题文档
  6. 使用 shell 脚本推送更新的文档

工作流使用特定的环境变量密钥

  • PERSONAL_TOKEN:用于 GitHub 身份验证
  • GH_REPO:存储库信息

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

工作流架构

下图说明了 GitHub Actions 工作流如何与代码库的关键组件连接

来源: .github/workflows/test.yml30-44 .github/workflows/generate-theme-doc.yml44-49

工作流作业执行

测试工作流执行矩阵构建策略,允许同一作业在需要时以不同配置运行

两个工作流都使用相似的配置模式

  • 在 Ubuntu 最新版上运行
  • 使用 Node.js 18.x
  • 利用 GitHub 缓存加速 npm 依赖项安装

来源: .github/workflows/test.yml14-18 .github/workflows/generate-theme-doc.yml24-29

工作流执行表

工作流触发器关键操作输出
测试推送到 master,PR 到 master运行测试、代码检查、基准测试、格式化检查测试报告、代码覆盖率
主题文档推送到 themes/index.js生成主题文档更新的 themes/README.md

来源: .github/workflows/test.yml2-8 .github/workflows/generate-theme-doc.yml2-7

与开发工作流程的集成

GitHub Actions 工作流与项目的开发工作流集成,提供自动化检查和文档更新

来源: .github/workflows/test.yml2-8 .github/workflows/generate-theme-doc.yml2-7

最佳实践

此项目中的 GitHub Actions 工作流遵循多项最佳实践

  1. 固定 Actions:外部 Actions 通过提交 SHA 引用(例如 actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683)固定到特定版本,以确保安全性和稳定性
  2. 最小权限:工作流遵循最小权限原则
  3. 缓存:缓存 Node 模块以加快工作流执行速度
  4. 矩阵策略:如果需要,支持跨不同环境进行测试
  5. 路径过滤:主题文档工作流仅在特定文件更改时运行

来源: .github/workflows/test.yml21-27 .github/workflows/generate-theme-doc.yml32-38 .github/workflows/generate-theme-doc.yml6-7

结论

GitHub Readme Stats 存储库中的 GitHub Actions 工作流提供了自动化的测试、文档生成和验证。这些工作流有助于维护代码质量,并确保文档与最新的主题更改保持同步。