継続的インテグレーション (CI)#
継続的インテグレーション (CI) は、変更を統合して自動的にテストを行う、ソフトウェア開発において不可欠な側面です。CI を活用することで、開発プロセスの初期段階かつ頻繁に問題を検出し、高品質なコードを維持することができます。Ultralytics では、コードベースの品質と整合性を確保するために、さまざまな CI テストを使用しています。
CI アクション#
以下は、当社の CI アクションの概要です:
- CI: これは、単体テスト、リンティングチェック、およびリポジトリによってはより包括的なテストを実行する、当社の主要なCIテストです。
- Docker Deployment: このテストは、Dockerを使用してプロジェクトのデプロイメントを確認し、Dockerfileや関連スクリプトが正しく動作していることを保証します。
- Broken Links: このテストは、マークダウンファイルやHTMLファイル内の壊れたリンクや無効なリンクがないかコードベースをスキャンします。
- CodeQL: CodeQLはGitHubのツールであり、コードに対してセマンティック分析を実行し、潜在的なセキュリティ脆弱性の発見や高品質なコードの維持に役立ちます。
- PyPI Publishing: このテストは、プロジェクトがエラーなくパッケージ化され、PyPIに公開できるかどうかを確認します。
CI 結果#
以下に、当社メインリポジトリの CI テストのステータスを示す表を記載します:
| リポジトリ | CI | Docker Deployment | Broken Links | CodeQL | PyPI and Docs Publishing |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| yolo-ios-app | |||||
| yolo-flutter-app | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
各バッジは、それぞれのリポジトリの main ブランチにおける対応するCIテストの最後の実行ステータスを示します。テストが失敗した場合は「failing」ステータスが表示され、成功した場合は「passing」ステータスが表示されます。
もしテストが失敗していることに気づいた場合は、該当するリポジトリの 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設定には、unit tests, linting checks, and comprehensive tests の実行が含まれます。さらに、Docker deployment、broken link checks、セキュリティ脆弱性のための CodeQL analysis、およびソフトウェアをパッケージ化して配布するための PyPI publishing を実行します。
Ultralyticsでは、マークダウンおよびHTMLファイル内の check for broken links を行うために、特定のCIアクションを使用しています。これにより、無効なリンクや壊れたリンクをスキャンして特定し、ユーザーが常に正確で最新のリソースにアクセスできるようにすることで、ドキュメントの整合性を維持します。
CodeQL analysis は、潜在的なセキュリティ脆弱性を発見して高品質な基準を維持するためにセマンティックコード分析を実行するため、Ultralyticsにとって不可欠です。CodeQLを使用することで、コード内のリスクをプロアクティブに特定して軽減し、堅牢で安全な software solutions を提供できるようになります。
Ultralyticsは、専用のCIアクションを通じてプロジェクトのデプロイメントを検証するためにDockerを採用しています。このプロセスにより、Dockerfile and associated scripts が正しく機能することが保証され、スケーラブルで信頼性の高いAIソリューションに不可欠な、一貫性のある再現可能なデプロイメント環境が可能になります。
自動化された PyPI publishing により、プロジェクトがエラーなくパッケージ化および公開されることが保証されます。このステップはUltralyticsのPythonパッケージを配布するために不可欠であり、ユーザーが Python Package Index (PyPI) を介してツールを簡単にインストールして使用できるようにします。