跳转至内容

持续集成 (CI)

持续集成 (CI) 是软件开发的一个重要方面,它涉及集成更改并自动测试它们。CI 使我们能够通过在开发过程中尽早且经常地发现问题来保持高质量的代码。在 Ultralytics,我们使用各种 CI 测试来确保代码库的质量和完整性。

CI 操作

以下是我们 CI 操作的简要说明:

  • CI: 这是我们的主要 CI 测试,涉及运行单元测试、linting 检查,有时还会进行更全面的测试,具体取决于存储库。
  • Docker部署: 此测试检查使用Docker部署项目,以确保Dockerfile和相关脚本正常工作。
  • 链接失效: 此测试会扫描代码库中 markdown 或 HTML 文件中任何失效或死链接。
  • CodeQL: CodeQL是GitHub提供的一款工具,它能对我们的代码进行语义分析,帮助我们发现潜在的安全漏洞并保持代码的高质量。
  • PyPI 发布 此测试检查项目是否可以打包并发布到 PyPi,且不出现任何错误。

CI 结果

下表显示了我们主要仓库的这些 CI 测试的状态:

仓库 CI Docker 部署 链接失效 CodeQL PyPI 和文档发布
yolov3 YOLOv3 CI 发布 Docker 镜像 检查失效链接 CodeQL
yolov5 YOLOv5 CI 发布 Docker 镜像 检查失效链接 CodeQL
Ultralytics Ultralytics CI 发布 Docker 镜像 检查失效链接 CodeQL 发布到 PyPI 并部署文档 Conda 构建
yolo-ios-app iOS App CI CodeQL 发布 iOS App
yolo-flutter-app Flutter App CI CodeQL 发布到 pub.dev
hub HUB CI 检查失效链接
hub-sdk HUB-SDK CI 检查失效链接 CodeQL 发布到 PyPI
thop Ultralytics Actions CodeQL 发布到 PyPI
操作 Ultralytics Actions CodeQL 发布到 PyPI
mkdocs Ultralytics Actions CodeQL 发布到 PyPI
文档 Ultralytics Actions 检查失效链接检查域名 pages-build-deployment
手册 Ultralytics Actions 检查失效链接 pages-build-deployment

每个徽章显示了相应 CI 测试上次运行的状态 main 相应存储库的分支。如果测试失败,徽章将显示“失败”状态;如果测试通过,则显示“通过”状态。

如果您发现有测试失败,如果您能在相应的存储库中通过 GitHub issue 报告它,那将非常有帮助。

请记住,成功的CI测试并不意味着一切都是完美的。 始终建议在部署或合并更改之前手动检查代码。

代码覆盖率

代码覆盖率是一个指标,表示在运行测试时执行的代码库的百分比。它可以帮助您了解测试对代码的覆盖程度,对于识别应用程序中未经测试的部分至关重要。较高的代码覆盖率通常与较低的错误可能性相关。但是,必须了解的是,代码覆盖率并不能保证没有缺陷。它仅指示代码的哪些部分已通过测试执行。

codecov.io 集成

在 Ultralytics,我们将我们的代码仓库与 codecov.io 集成,这是一个流行的在线平台,用于测量和可视化代码覆盖率。Codecov 提供详细的见解、提交之间的覆盖率比较,以及直接在代码上的可视化覆盖层,指示哪些行被覆盖。

通过与 Codecov 集成,我们的目标是通过关注可能容易出错或需要进一步测试的领域来维护和提高代码质量。

覆盖率结果

要快速了解 的代码覆盖率状态 ultralytics python 包,我们添加了一个徽章和旭日图来展示 ultralytics 覆盖率结果。这些图像显示了我们的测试所覆盖的代码百分比,一目了然地展示了我们的测试工作。有关完整详细信息,请参见 https://codecov.io/github/ultralytics/ultralytics.

仓库 代码覆盖率
Ultralytics codecov

在下面的旭日形图中,最内圈是整个项目,远离中心的是文件夹,最后是单个文件。每个切片的大小和颜色分别代表语句的数量和覆盖率。

Ultralytics Codecov 图像

常见问题

Ultralytics 中的持续集成 (CI) 是什么?

Ultralytics 中的持续集成 (CI) 涉及自动集成和测试代码更改,以确保高质量标准。我们的 CI 设置包括运行单元测试、linting 检查和综合测试。此外,我们还执行Docker 部署断链检查、用于安全漏洞的CodeQL 分析以及PyPI 发布,以打包和分发我们的软件。

Ultralytics 使用特定的 CI 操作来检查 markdown 和 HTML 文件中是否存在损坏的链接。这有助于通过扫描和识别死链接或损坏的链接来维护我们文档的完整性,确保用户始终可以访问准确且实时的资源。

为什么 CodeQL 分析对于 Ultralytics 的代码库如此重要?

CodeQL分析对于Ultralytics至关重要,因为它执行语义代码分析以查找潜在的安全漏洞并保持高质量标准。借助CodeQL,我们可以主动识别并缓解代码中的风险,从而帮助我们提供强大而安全的软件解决方案

Ultralytics 如何利用 Docker 进行部署?

Ultralytics 使用 Docker 通过专门的 CI 操作来验证我们项目的部署。此过程确保我们的 Dockerfile 和相关脚本能够正常运行,从而实现一致且可重现的部署环境,这对于可扩展且可靠的 AI 解决方案至关重要。

在 Ultralytics 中,自动化 PyPI 发布的作用是什么?

自动化的 PyPI 发布 确保了我们的项目可以被打包和发布而不会出错。这一步对于分发 Ultralytics 的 python 包至关重要,它允许用户通过 Python Package Index (PyPI) 轻松安装和使用我们的工具。

Ultralytics 如何衡量代码覆盖率?为什么这很重要?

Ultralytics 通过与 Codecov 集成来衡量代码覆盖率,从而深入了解在测试期间执行了多少代码库。高代码覆盖率可以表明代码经过了充分的测试,有助于发现可能容易出现错误且未经测试的区域。可以通过我们主要存储库上显示的徽章或直接在 Codecov 上浏览详细的代码覆盖率指标。



📅 创建于 1 年前 ✏️ 更新于 17 天前

评论