本文档解释了 YOLOv5 开发中使用的持续集成和持续部署 (CI/CD) 工作流程。它涵盖了 GitHub Actions 工作流程、测试矩阵和开发实践,以确保 YOLOv5 代码库中代码的质量和可靠性。
YOLOv5 使用 GitHub Actions 作为其主要的 CI/CD 平台,以自动化测试、代码质量检查和存储库维护。CI/CD 流水线通过以下方式帮助维护代码质量:
YOLOv5 实现了多个 GitHub Actions 工作流程,这些工作流程处理开发生命周期的不同方面
来源: .github/workflows/ci-testing.yml .github/workflows/format.yml .github/workflows/stale.yml .github/workflows/merge-main-into-prs.yml .github/workflows/cla.yml
YOLOv5 的 CI/CD 系统的核心是定义在 .github/workflows/ci-testing.yml 中的 CI 测试工作流程中定义的。此工作流程在每次推送到 master、针对 master 的拉取请求以及通过计划的每日 cron 作业时运行。
来源: .github/workflows/ci-testing.yml16-151
CI 测试工作流程包含三个主要作业:
YOLOv5 的 CI 使用测试矩阵策略来确保跨不同环境的兼容性
| 作业 | 操作系统 | Python 版本 | 模型 | 目的 |
|---|---|---|---|---|
| 基准测试 | Ubuntu | 3.11 | yolov5n | 性能测试 |
| 测试 | Ubuntu | 3.11, 3.8* | yolov5n | 功能测试 |
| 测试 | Windows | 3.11 | yolov5n | 功能测试 |
| 测试 | macOS | 3.11 | yolov5n | 功能测试 |
* Python 3.8 专门用于与 torch 1.8.0 (最低支持版本) 进行测试
来源: .github/workflows/ci-testing.yml18-63
格式化工作流程(.github/workflows/format.yml) 确保所有拉取请求都遵循 YOLOv5 的编码标准
此工作流程在问题和拉取请求事件上运行,有助于保持一致的代码质量。
来源: .github/workflows/format.yml1-59
CLA 工作流程(.github/workflows/cla.yml) 管理贡献者许可协议流程
此工作流程确保对 YOLOv5 的所有贡献都符合许可要求。
来源: .github/workflows/cla.yml1-46
YOLOv5 采用其他工作流程来帮助维护存储库
过期工作流程(.github/workflows/stale.yml) 自动管理不活跃的问题和 PR
这有助于问题跟踪器专注于活动开发。
来源: .github/workflows/stale.yml1-48
merge-main 工作流程(.github/workflows/merge-main-into-prs.yml) 使 PR 与主分支保持同步
这有助于通过使 PR 与最新更改保持同步来防止合并冲突。
来源: .github/workflows/merge-main-into-prs.yml1-73
CI/CD 流水线依赖于 `requirements` 文件中定义的特定依赖项
主要的 CI 测试工作流程测试 YOLOv5 的核心功能
基准测试作业使用特定指标评估模型性能
python benchmarks.py --data coco128.yaml --weights yolov5n.pt --img 320 --hard-fail 0.29
python benchmarks.py --data coco128-seg.yaml --weights yolov5n-seg.pt --img 320 --hard-fail 0.22
`--hard-fail` 参数设置了模型必须满足的最低性能阈值。
来源: .github/workflows/ci-testing.yml38-42
测试作业验证核心功能
检测管道:
train.py --imgsz 64 --batch 32 --weights yolov5n.pt --cfg yolov5n.yaml --epochs 1val.py --imgsz 64 --batch 32 --weights yolov5n.ptdetect.py --imgsz 64 --weights yolov5n.pthubconf.py --model yolov5nmodels/yolo.py --cfg yolov5n.yamlexport.py --weights yolov5n.pt --img 64 --include torchscript分割管道:
分类管道:
来源: .github/workflows/ci-testing.yml83-132
为了确保您的代码在提交 PR 之前通过 CI 检查
安装 CI 中使用的相同依赖项
在本地运行验证测试
检查您的代码是否遵循 YOLOv5 的格式标准。
来源: .github/workflows/ci-testing.yml69-133
您可以监控 YOLOv5 的 CI/CD 流水线的状态
来源: .github/workflows/format.yml54-59
YOLOv5 的 CI/CD 流水线可确保代码质量、跨环境兼容性以及核心功能的持续测试。自动化工作流程通过提供对更改的快速反馈并在整个代码库中保持一致的标准,使开发和贡献更加顺畅。