持续集成 (CI)#
持续集成 (CI) 是软件开发中的一个重要环节,它涉及自动集成和测试代码变更。CI 使我们能够通过在开发过程中尽早且频繁地发现问题来保持高质量的代码。在 Ultralytics,我们使用各种 CI 测试来确保代码库的质量和完整性。
CI 操作#
以下是我们 CI 操作的简要描述:
- **CI:**这是我们的主要 CI 测试,根据仓库的不同,包括运行单元测试、代码规范检查(linting checks),有时还包括更全面的测试。
- **Docker Deployment:**此测试使用 Docker 检查项目的部署情况,以确保 Dockerfile 和相关脚本正常工作。
- **Broken Links:**此测试会扫描代码库,查找 markdown 或 HTML 文件中的任何失效或死链接。
- **CodeQL:**CodeQL 是 GitHub 的一款工具,可对代码执行语义分析,帮助发现潜在的安全漏洞并维护高质量代码。
- **PyPI Publishing:**此测试检查项目是否能够打包并无错误地发布到 PyPI。
CI 结果#
下表显示了我们主要存储库的 CI 测试状态:
| 存储库 | CI | Docker 部署 | 损坏链接 | CodeQL | PyPI 和文档发布 |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| yolo-ios-app | |||||
| yolo-flutter-app | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
每个徽章显示相应仓库的 main 分支上上一次运行 CI 测试的状态。如果测试失败,徽章将显示“failing”状态;如果测试通过,将显示“passing”状态。
如果你发现测试失败,如果能在相应的存储库中通过 GitHub issue 进行反馈,那将是极大的帮助。
请记住,CI 测试通过并不意味着一切完美。在部署或合并变更之前,始终建议手动审查代码。
代码覆盖率#
代码覆盖率是一个衡量指标,表示运行测试时执行的代码库百分比。它提供了对测试执行代码程度的深入见解,对于识别应用程序中未经测试的部分至关重要。高代码覆盖率通常意味着较低的错误概率。然而,必须理解代码覆盖率并不保证没有缺陷。它仅仅指出了代码中哪些部分已被测试执行。
与 codecov.io 集成#
在 Ultralytics,我们将仓库与 codecov.io 进行了集成,这是一个用于测量和可视化代码覆盖率的流行在线平台。Codecov 提供详细的见解、提交之间的覆盖率比较,以及直接在代码上显示的视觉覆盖,指示哪些行被覆盖了。
通过与 Codecov 集成,我们旨在通过关注可能容易出错或需要进一步测试的领域来维护和提高代码质量。
覆盖率结果#
为了快速了解我们仓库的代码覆盖率状态,我们为每个跟踪的项目包含了 Codecov 徽章和旭日图预览。每个旭日图的最内层圆圈代表整个项目,向外依次是文件夹,最后是单个文件。每个扇形的大小和颜色分别代表语句数量和覆盖率。有关完整详情,请访问 Ultralytics Codecov organization。
| 存储库 | 代码覆盖率 | 旭日图 |
|---|---|---|
| actions | ||
| ultralytics | ||
| inference | ||
| yolo-flutter-app | ||
| yolo-ios-app | ||
| llm | ||
| profile | ||
| template | ||
| template-rust | ||
| replicate |
常见问题解答#
Ultralytics 中的持续集成 (CI) 涉及自动集成和测试代码更改,以确保高质量标准。我们的 CI 设置包括运行单元测试、代码规范检查和综合测试。此外,我们还执行 Docker 部署、失效链接检查、用于安全漏洞的 CodeQL 分析以及用于打包和分发软件的 PyPI 发布。
Ultralytics 使用特定的 CI 动作来检查失效链接,这些链接位于我们的 markdown 和 HTML 文件中。这通过扫描和识别死链或失效链接来帮助维护文档的完整性,确保你始终能够访问准确且最新的资源。
Ultralytics 采用 Docker 通过专用的 CI 动作来验证项目的部署。此过程可确保我们的 Dockerfile 和相关脚本正常运行,从而实现一致且可重复的部署环境,这对于可扩展且可靠的 AI 解决方案至关重要。
自动化 PyPI 发布确保我们的项目可以无错误地打包和发布。此步骤对于分发 Ultralytics 的 Python 包至关重要,允许你通过 Python Package Index (PyPI) 轻松安装和使用我们的工具。