継続的インテグレーション (CI)

継続的インテグレーション (CI) は、ソフトウェア開発において変更を統合し、自動的にテストを行う不可欠な要素です。CIを活用することで、開発プロセス全体を通じて頻繁に早期の問題検知を行い、高品質なコードを維持できます。Ultralyticsでは、コードベースの品質と整合性を確保するために、さまざまなCIテストを実施しています。

CIアクション

各CIアクションの簡単な説明は以下の通りです:

  • CI: ユニットテスト、リンティングチェック、およびリポジトリに応じて実施される包括的なテストを含む、主要なCIテストです。
  • Docker Deployment: Dockerを使用したプロジェクトのデプロイメントをチェックし、Dockerfileや関連スクリプトが正しく動作することを確認するテストです。
  • Broken Links: MarkdownやHTMLファイル内の壊れたリンクや無効なリンクをスキャンするテストです。
  • CodeQL: GitHubのツールであるCodeQLを使用してコードのセマンティック解析を行い、潜在的なセキュリティ脆弱性の発見と高品質なコードの維持に役立てています。
  • PyPI Publishing: プロジェクトをパッケージ化し、エラーなくPyPIに公開できるかをチェックするテストです。

CI結果

主要リポジトリにおけるこれらのCIテストのステータスを以下の表に示します:

リポジトリCIDocker DeploymentBroken LinksCodeQLPyPI and Docs Publishing
yolov3YOLOv3 CIPublish Docker ImagesCheck Broken linksCodeQL
yolov5YOLOv5 CIPublish Docker ImagesCheck Broken linksCodeQL
ultralyticsultralytics CIPublish Docker ImagesCheck Broken linksCodeQLPublish to PyPI and Deploy Docs Conda Builds
yolo-ios-app (App Store)iOS App CICodeQLPublish iOS App
yolo-flutter-appFlutter App CICodeQLPublish to pub.dev
hubHUB CICheck Broken links
hub-sdkHUB-SDK CICheck Broken linksCodeQLPublish to PyPI
thopUltralytics ActionsCodeQLPublish to PyPI
actionsActions CICodeQLPublish to PyPI
mkdocsUltralytics ActionsCodeQLPublish to PyPI
docsUltralytics ActionsCheck Broken linksCheck Domainspages-build-deployment
handbookUltralytics ActionsCheck Broken linkspages-build-deployment
starsUltralytics ActionsUpdate Analytics
CLIPCLIP CI

各バッジは、それぞれのRepositoryの main ブランチにおけるCIテストの最新実行結果を示しています。テストが失敗した場合は「failing」、成功した場合は「passing」と表示されます。

テストの失敗に気付いた場合は、それぞれのRepositoryでGitHub Issueを通じて報告していただけると大変助かります。

CIテストが成功したからといってすべてが完璧とは限りません。デプロイやマージを行う前に、コードを手動でレビューすることを常にお勧めします。

コードカバレッジ

コードカバレッジは、テスト実行時にコードベースの何パーセントが実行されたかを示す指標です。テストがどれだけコードを網羅しているかを確認でき、テストされていない部分を特定するために重要です。一般的に、高いコードカバレッジ率はバグの発生確率の低さと関連付けられます。ただし、コードカバレッジは欠陥がないことを保証するものではなく、単にテストによって実行されたコードの箇所を示しているだけであるという点を理解しておくことが不可欠です。

codecov.io との統合

Ultralyticsでは、コードカバレッジの測定と視覚化を行うための一般的なオンラインプラットフォームである codecov.io とリポジトリを統合しています。Codecovは、詳細な分析、コミット間のカバレッジ比較、そしてどの行がカバーされたかをコード上で直接確認できるビジュアルオーバーレイを提供します。

Codecovとの統合を通じて、エラーが発生しやすい領域やさらなるテストが必要な領域に焦点を当てることで、コードの品質維持と向上を目指しています。

カバレッジ結果

To quickly get a glimpse of the code coverage status of the ultralytics Python package, we have included a badge and sunburst visual of the ultralytics coverage results. These images show the percentage of code covered by our tests, offering an at-a-glance metric of our testing efforts. For full details, visit the Ultralytics Codecov report.

リポジトリコードカバレッジ
ultralyticscodecov

以下のサンバースト図では、最も内側の円がプロジェクト全体であり、中心から外側に向かってフォルダ、最後に個々のファイルが示されています。各スライスのサイズと色は、ステートメント数とカバレッジ率をそれぞれ表しています。

Ultralytics Codecov Image

FAQ

Ultralyticsにおける継続的インテグレーション (CI) とは何ですか?

Ultralyticsの継続的インテグレーション (CI) は、高い品質基準を確保するために、コード変更の統合とテストを自動的に行うものです。CI構成には、ユニットテスト、リンティングチェック、および包括的なテストの実行が含まれます。さらに、Dockerデプロイメント壊れたリンクのチェック、セキュリティ脆弱性のための CodeQL解析、およびソフトウェアをパッケージ化して配布するための PyPI公開を実施しています。

Ultralyticsはどのようにドキュメントやコード内の壊れたリンクをチェックしていますか?

Ultralyticsは、MarkdownおよびHTMLファイル内の壊れたリンクをチェックするための専用CIアクションを使用しています。これにより、無効なリンクをスキャンして特定し、ユーザーが常に正確で有効なリソースにアクセスできるようにすることで、ドキュメントの整合性を維持しています。

なぜUltralyticsのコードベースにとってCodeQL解析が重要なのでしょうか?

CodeQL解析は、潜在的なセキュリティ脆弱性の発見と高い品質基準を維持するためにセマンティックなコード解析を行うため、Ultralyticsにとって極めて重要です。CodeQLにより、コード内のリスクを事前に特定して軽減し、堅牢で安全なソフトウェアソリューションを提供することに役立てています。

UltralyticsはどのようにデプロイメントにDockerを活用していますか?

Ultralyticsは、専用のCIアクションを通じて、プロジェクトのデプロイメントを検証するためにDockerを活用しています。このプロセスにより、Dockerfileと関連スクリプトが正しく機能していることを確認し、拡張可能で信頼性の高いAIソリューションに不可欠な、一貫性のある再現可能なデプロイ環境を実現しています。

Ultralyticsにおける自動化されたPyPI公開の役割は何ですか?

自動化された PyPI公開は、プロジェクトがエラーなくパッケージ化され、公開されることを保証します。このステップは、UltralyticsのPythonパッケージを配布するために不可欠であり、ユーザーが Python Package Index (PyPI) を通じて簡単にインストールしてツールを利用できるようにします。

Ultralyticsはどのようにコードカバレッジを測定し、なぜそれが重要なのですか?

Ultralyticsは Codecov との統合を通じてコードカバレッジを測定し、テスト中にコードベースのどの部分が実行されたかを把握しています。高いコードカバレッジは十分にテストされたコードであることを示唆し、バグの発生源となり得るテストされていない領域の発見に役立ちます。詳細なコードカバレッジ指標は、主要リポジトリに表示されているバッジや Codecov 上で直接確認できます。

コメント