継続的インテグレーション (CI)#
継続的インテグレーション (CI)は、変更を統合して自動的にテストするソフトウェア開発に不可欠な要素です。CIにより、開発プロセスの早い段階で頻繁に問題を検出し、高品質なコードを維持できます。Ultralyticsでは、コードベースの品質と整合性を確保するために、さまざまなCIテストを使用しています。
CIアクション#
ここでは、CIアクションについて簡単に説明します。
- CI: ユニットテスト、lintチェック、およびリポジトリによってはより包括的なテストを実行する、主要なCIテストです。
- Dockerデプロイ: Dockerを使用したプロジェクトのデプロイを検証し、Dockerfileと関連スクリプトが正しく動作することを確認するテストです。
- 壊れたリンク: MarkdownまたはHTMLファイル内の壊れたリンクや無効なリンクがコードベースにないかをスキャンするテストです。
- CodeQL: CodeQLはGitHubのツールで、コードのセマンティック解析を実行し、潜在的なセキュリティ脆弱性の検出と高品質なコードの維持を支援します。
- PyPI公開: プロジェクトをエラーなくパッケージ化してPyPIに公開できるかを確認するテストです。
CI結果#
以下の表は、主要リポジトリにおけるこれらのCIテストのステータスを示しています。
| リポジトリ | CI | Dockerデプロイ | 壊れたリンク | CodeQL | PyPIおよびDocsの公開 |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| sdk | |||||
| yolo-ios-app | |||||
| yolo-flutter-app | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
各バッジは、それぞれのリポジトリのmainブランチで対応するCIテストを最後に実行した際のステータスを示します。テストに失敗するとバッジには「失敗」と表示され、成功すると「成功」と表示されます。
テストの失敗に気付いた場合は、それぞれのリポジトリで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 |
FAQ#
Ultralyticsにおける継続的インテグレーション (CI) では、高品質の基準を確保するため、コードの変更を自動的に統合してテストします。CIのセットアップには、ユニットテスト、lintチェック、包括的なテストの実行が含まれます。さらに、Dockerデプロイ、壊れたリンクのチェック、セキュリティ脆弱性を調べるCodeQL解析、およびソフトウェアをパッケージ化して配布するためのPyPI公開を実施します。
Ultralyticsでは、MarkdownおよびHTMLファイル内の壊れたリンクをチェックする専用のCIアクションを使用しています。これにより、無効または壊れたリンクをスキャンして特定し、ユーザーが常に正確で有効なリソースにアクセスできるようにすることで、ドキュメントの整合性を維持できます。
CodeQL解析は、セマンティックコード解析を実行して潜在的なセキュリティ脆弱性を検出し、高品質の基準を維持するため、Ultralyticsにとって重要です。CodeQLにより、コード内のリスクを事前に特定して軽減し、堅牢で安全なソフトウェアソリューションの提供を支援できます。
Ultralyticsでは、専用のCIアクションを通じてプロジェクトのデプロイを検証するためにDockerを使用しています。このプロセスにより、Dockerfileと関連スクリプトが正しく機能することを確認し、スケーラブルで信頼性の高いAIソリューションに不可欠な、一貫性があり再現可能なデプロイ環境を実現できます。
自動化されたPyPI公開により、プロジェクトをエラーなくパッケージ化して公開できます。この手順はUltralyticsのPythonパッケージを配布するために不可欠であり、ユーザーはPythonパッケージインデックス (PyPI)を通じてツールを簡単にインストールして使用できます。