菜单

GitHub 工作流

相关源文件

本文档介绍了 RealWorld 项目中的 GitHub 工作流配置。这些工作流为代码安全扫描、测试和质量保证提供了自动化流程。有关一般的贡献指南,请参阅 贡献

目的和概述

RealWorld 项目中的 GitHub 工作流通过位于 .github/workflows/ 目录中的 YAML 配置文件来自动化关键的开发流程。根据系统图和可用文件,该存储库实现了以下工作流:

  1. 使用 CodeQL 进行代码安全扫描(下文将详细介绍)
  2. API 测试(在系统图中引用)
  3. Lint 检查(在系统图中引用)

CodeQL 安全分析工作流

主要的可见工作流是定义在 .github/workflows/codeql.yml 中的 CodeQL 安全分析,它对 JavaScript 代码执行自动代码扫描以检测潜在的安全漏洞。

触发器配置

工作流配置了以下触发器:

这意味着工作流将执行:

  • 通过 workflow_dispatch 手动触发
  • 每周三 3:24 UTC 自动触发

作业配置

工作流定义了一个名为 analyze 的作业,具有特定的权限和语言矩阵。

执行步骤

工作流执行三个主要步骤:

  1. 使用 actions/checkout@v4 进行仓库检出
  2. 使用 github/codeql-action/init@v2 进行 CodeQL 初始化
  3. 使用 github/codeql-action/analyze@v2 进行代码分析

这些步骤对仓库中的 JavaScript 代码执行静态代码分析。

CodeQL 工作流流程

CodeQL 工作流图

来源:.github/workflows/codeql.yml

CI 工作流集成

根据系统概述图,GitHub 工作流已集成到 RealWorld 仓库的开发流程中,形成一个全面的持续集成系统。

CI 工作流集成图

来源:系统概述图,.github/workflows/codeql.yml

工作流文件和结构

位于 .github/workflows/ 目录包含工作流定义文件:

文件目的
codeql.yml定义 CodeQL 安全分析工作流
其他工作流文件(推断)API 测试、Lint 检查等

该目录结构遵循 GitHub 的工作流定义约定。

.github/
└── workflows/
    └── codeql.yml

来源:.github/workflows/codeql.yml

工作流修改最佳实践

在为现有工作流贡献更改或添加新工作流时:

  1. 将所有工作流定义存储在 .github/workflows/ 目录中。
  2. 为工作流文件使用描述性名称,以表明其用途。
  3. 根据工作流的功能设置适当的触发事件。
  4. 遵循最小权限原则配置权限。
  5. 尽可能利用 GitHub 的可重用操作。
  6. 使用注释记录不明显的配置。

来源:.github/workflows/codeql.yml