菜单

CI/CD 流水线

相关源文件

目的与范围

本文档介绍了 hackingtool 仓库中实现的持续集成/持续部署(CI/CD)流水线。它涵盖了代码提交或合并时发生的代码质量检查、测试和验证的自动化流程。有关向代码库添加新工具的信息,请参阅 添加新工具

来源: .github/workflows/lint_python.yml1-32

流水线概览

hackingtool 仓库使用 GitHub Actions 来实现其 CI/CD 流水线。当代码被推送到 master 分支或创建针对 master 分支的拉取请求时,流水线会自动运行。

CI/CD 工作流程图

来源: .github/workflows/lint_python.yml1-11

工作流配置

CI/CD 流水线在 .github/workflows 目录下的 lint_python.yml 文件中进行配置。该文件定义了自动化检查运行的时间和方式。

流水线触发器

来源: .github/workflows/lint_python.yml2-6

环境设置

流水线在 Ubuntu Latest 上运行,并设置 Python 3.x 作为其运行时环境。它会安装质量检查所需的各种工具。

来源: .github/workflows/lint_python.yml8-23

代码质量检查

流水线实施了多项代码质量检查,以确保代码库保持高标准的质量和可靠性。

使用 Ruff 进行代码 linting

Ruff 是一个快速的 Python linter,用于检查代码中的各种类型问题。流水线以三种不同的配置运行 Ruff:

  1. 严重问题检查:识别必须修复的“拦路虎”问题
  2. 全面检查:报告所有潜在问题及统计数据
  3. 可修复问题检查:突出显示可以自动修复的问题

来源: .github/workflows/lint_python.yml16-22

代码格式和风格

流水线使用 Black 检查代码格式和风格,并使用 Codespell 进行拼写检查。

来源: .github/workflows/lint_python.yml24-25

依赖管理

流水线尝试安装项目依赖项,以确保它们可以被正确安装,并为测试做好准备。

来源: .github/workflows/lint_python.yml26

测试和类型检查

流水线同时使用 MyPy 进行静态类型检查和 Pytest 进行动态测试。

来源: .github/workflows/lint_python.yml27-30

安全扫描

流水线使用 Safety 对项目依赖项执行安全检查。

来源: .github/workflows/lint_python.yml31

与代码仓库集成

CI/CD 流水线与仓库结构集成,以确保整个代码库的代码质量。

来源: hackingtool.py1-123 .github/workflows/lint_python.yml1-32

流水线执行流程

下图说明了 CI/CD 流水线从触发到完成的执行过程。

来源: .github/workflows/lint_python.yml1-32

对开发者的益处

CI/CD 流水线为 hackingtool 项目的开发人员提供了多项好处:

优点描述
代码质量确保代码库的编码标准一致
早期错误检测在问题合并到 master 分支之前进行识别
安全意识突出显示依赖项中的潜在安全漏洞
文档准确性检查文档字符串和注释中的拼写错误
类型安全使用 MyPy 验证类型一致性
测试覆盖通过自动化测试确保功能按预期工作

来源: .github/workflows/lint_python.yml1-32

本地运行检查

开发人员可以在推送代码之前在本地运行相同的检查,以确保代码能够通过 CI/CD 流水线。

本地设置

来源: .github/workflows/lint_python.yml15-31

持续改进

CI/CD 流水线是一个可以随着时间推移而改进的活动系统。未来可能的增强包括:

  1. 添加代码覆盖率报告
  2. 实施自动化部署
  3. 添加性能基准测试
  4. 扩展测试套件
  5. 实施自动化依赖更新

来源: .github/workflows/lint_python.yml1-32