跳至内容

持续集成 (CI)

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

传播和信息行动

下面简要介绍一下我们的 CI 行动:

  • CI这是我们的主要 CI 测试,包括运行单元测试、内衬检查,有时还会根据版本库的情况进行更全面的测试。
  • Docker 部署该测试使用 Docker 检查项目的部署情况,以确保 Dockerfile 和相关脚本工作正常。
  • 断开链接该测试会扫描代码库,检查markdown 或 HTML 文件中是否存在断开或死链接。
  • CodeQLCodeQL 是 GitHub 提供的一款工具,可对我们的代码进行语义分析,帮助查找潜在的安全漏洞并维护高质量的代码。
  • PyPI 发布该测试检查项目是否可以打包并发布到 PyPi 上,且没有任何错误。

CI 结果

下表显示了我们主要软件源的 CI 测试状态:

存储库 CI Docker 部署 断开的链接 代码QL PyPI 和文档发布
yolov3 YOLOv3 CI 发布 Docker 映像 检查断开的链接 代码QL
yolov5 YOLOv5 CI 发布 Docker 映像 检查断开的链接 代码QL
ultralytics ultralytics CI 发布 Docker 映像 检查断开的链接 代码QL 发布到 PyPI 并部署文档
枢纽 HUB CI 检查断开的链接
文档 检查断开的链接检查域名 页面-构建-部署

每个徽章都显示了相应的 CI 测试最后一次运行的状态。 main 分支。如果测试失败,徽章将显示 "失败 "状态;如果测试通过,徽章将显示 "通过 "状态。

如果您发现测试失败,请通过 GitHub 在相应版本库中的问题进行报告,这将对您大有帮助。

请记住,成功的 CI 测试并不意味着一切都完美无缺。建议在部署或合并变更之前,始终对代码进行手动审查。

代码覆盖范围

代码覆盖率是一个指标,表示测试运行时执行的代码占代码库的百分比。它能让人了解测试对代码的锻炼程度,对于识别应用程序中未经测试的部分至关重要。代码覆盖率越高,出现错误的可能性就越低。但是,我们必须明白,代码覆盖率并不能保证没有缺陷。它只是表明代码的哪些部分已被测试执行。

codecov.io集成

在Ultralytics ,我们将我们的软件源与codecov.io 集成在一起,这是一个用于测量和可视化代码覆盖率的流行在线平台。Codecov 提供详细的洞察力、提交之间的覆盖率比较以及直接在代码上显示覆盖行的可视化覆盖图。

通过与 Codecov 集成,我们将重点关注可能容易出错或需要进一步测试的领域,从而保持和提高代码质量。

覆盖结果

要快速了解 ultralytics python 我们在软件包中加入了徽章和旭日的视觉效果。 ultralytics 覆盖结果。这些图片显示了我们的测试覆盖代码的百分比,为我们的测试工作提供了一个一目了然的衡量标准。有关详细信息,请参阅 https://codecov.io/github/ultralytics/ultralytics.

存储库 代码覆盖范围
ultralytics 编码解码器

在下面的旭日图中,最里面的圆圈是整个项目,从中心开始依次是文件夹,最后是单个文件。每个片段的大小和颜色分别代表语句的数量和覆盖范围。

Ultralytics Codecov 图像

常见问题

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

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

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

为什么 CodeQL 分析对Ultralytics' 代码库很重要?

CodeQL 分析对Ultralytics 至关重要,因为它可以执行语义代码分析,以发现潜在的安全漏洞并保持高质量标准。有了 CodeQL,我们可以主动识别和降低代码中的风险,帮助我们提供稳健安全的软件解决方案。

Ultralytics 如何利用 Docker 进行部署?

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

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

PyPI自动发布可确保我们的项目能够无差错地打包和发布。这一步骤对于发布Ultralytics'Python 软件包至关重要,可让用户通过Python 软件包索引 (PyPI) 轻松安装和使用我们的工具。

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

Ultralytics 通过与Codecov 集成来测量代码覆盖率,从而深入了解测试过程中执行了多少代码。高代码覆盖率表明代码经过了良好的测试,有助于发现可能容易出现错误的未测试区域。详细的代码覆盖率指标可通过我们主资源库上显示的徽章或直接在Codecov 上查看。



创建于 2023-11-12,更新于 2024-07-04
作者:glenn-jocher(8)、Burhan-Q(1)

评论