Skip to content

持续集成 (CI)

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

CI 操作

以下是我们 CI 操作的简要描述:

  • CI: 这是我们的主要 CI 测试,涉及运行单元测试、代码检查,有时还包括更全面的测试,具体取决于仓库。
  • 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并部署文档
hub-sdk HUB-SDK CI 检查损坏链接 CodeQL 发布到PyPI
hub HUB CI Check Broken links
docs Check Broken linksCheck Domains pages-build-deployment

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

如果您注意到测试失败,如果您能在相应仓库中通过 GitHub 问题报告它,将非常有帮助。

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

代码覆盖率

代码覆盖率是一个指标,表示在运行测试时执行的代码库的百分比。它提供了关于测试如何充分执行代码的洞察,并且在识别应用程序中未测试的部分时至关重要。高代码覆盖率百分比通常与较低的错误可能性相关。然而,重要的是要理解代码覆盖率并不能保证缺陷的缺失。它仅仅表明代码的哪些部分已被测试执行。

codecov.io 的集成

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

通过与 Codecov 集成,我们旨在通过关注可能容易出错或需要进一步测试的区域来保持和提高代码质量。

覆盖率结果

为了快速了解 ultralytics python 包的代码覆盖率状态,我们包含了一个徽章和 ultralytics 覆盖率结果的太阳爆发图。这些图像显示了我们的测试覆盖的代码百分比,提供了一个一目了然的测试努力指标。有关详细信息,请参见 https://codecov.io/github/ultralytics/ultralytics。

仓库 代码覆盖率
ultralytics codecov
在下面的旭日图表中,最内层的圆圈代表整个项目,向外依次是文件夹,最后是单个文件。每个切片的尺寸和颜色分别代表语句数量和覆盖率。

Ultralytics Codecov Image

常见问题

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

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

Ultralytics如何检查文档和代码中的断链?

Ultralytics使用特定的CI操作来检查断链,这些断链存在于我们的Markdown和HTML文件中。这有助于通过扫描和识别死链或断链来维护文档的完整性,确保用户始终能够访问准确和有效的资源。

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

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

Ultralytics如何利用Docker进行部署?

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

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

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

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

Ultralytics通过与Codecov集成来衡量代码覆盖率,提供关于在测试期间执行了多少代码库的洞察。高代码覆盖率可以表明代码经过良好测试,有助于发现可能存在缺陷的未测试区域。详细的代码覆盖率指标可以通过我们主仓库上显示的徽章或直接在Codecov上进行探索。


📅 Created 11 months ago ✏️ Updated 2 days ago

Comments