継続的インテグレーション(CI)
継続的インテグレーション(CI)は、変更を統合して自動的にテストすることを含む、ソフトウェア開発の重要な側面です。CIを使用すると、開発プロセスの早い段階で問題を頻繁にキャッチすることで、高品質のコードを維持できます。Ultralyticsでは、コードベースの品質と整合性を確保するために、さまざまなCIテストを使用しています。
CIアクション
CIアクションの簡単な説明を以下に示します。
- CI: これは、ユニットテスト、lintチェックの実行、およびリポジトリによってはより包括的なテストを含む、主要なCIテストです。
- Dockerデプロイメント: このテストでは、Dockerfileと関連スクリプトが正しく動作することを確認するために、Dockerを使用したプロジェクトのデプロイメントをチェックします。
- リンク切れ: このテストでは、markdownまたはHTMLファイル内のリンク切れを検出するために、コードベースをスキャンします。
- CodeQL: CodeQLはGitHubのツールで、コードに対してセマンティック分析を実行し、潜在的なセキュリティ脆弱性を見つけ、高品質なコードを維持するのに役立ちます。
- PyPI公開: このテストでは、プロジェクトをパッケージ化して、エラーなしでPyPiに公開できるかどうかを確認します。
CI結果
以下は、当社の主要リポジトリに対するこれらのCIテストのステータスを示す表です。
リポジトリ | CI | Dockerデプロイメント | リンク切れ | CodeQL | PyPIとドキュメントの公開(Publish) |
---|---|---|---|---|---|
yolov3 | |||||
YOLOv5 | |||||
Ultralytics | |||||
yolo-ios-app | |||||
yolo-flutter-app | |||||
hub | |||||
hub-sdk | |||||
thop | |||||
アクション | |||||
mkdocs | |||||
ドキュメント | |||||
ハンドブック |
各バッジは、対応するCIテストの最後の実行の状態を示します。 main
それぞれのレポジトリのブランチ。テストが失敗した場合、バッジには「失敗」ステータスが表示され、合格した場合は「合格」ステータスが表示されます。
テストの失敗に気付いた場合は、それぞれのレポジトリでGitHub issueを通じて報告していただけると大変助かります。
CIテストが成功したからといって、すべてが完璧であるとは限りません。デプロイまたは変更のマージを行う前に、コードを手動で確認することを常にお勧めします。
コードカバレッジ
コードカバレッジは、テスト実行時に実行されるコードベースの割合を示す指標です。テストがコードをどの程度網羅的に実行しているかについての洞察を提供し、アプリケーションのテストされていない部分を特定する上で重要となります。高いコードカバレッジ率は、バグの発生率が低いことと関連付けられることがよくあります。ただし、コードカバレッジは欠陥がないことを保証するものではないことを理解することが重要です。これは単に、コードのどの部分がテストによって実行されたかを示すだけです。
codecov.io との統合
Ultralyticsでは、コードカバレッジを測定および視覚化するための一般的なオンラインプラットフォームであるcodecov.ioとリポジトリを統合しました。Codecovは、詳細な洞察、コミット間のカバレッジ比較、およびコード上でどの行がカバーされたかを示す視覚的なオーバーレイを直接提供します。
Codecovとの統合により、エラーが発生しやすい領域や、さらなるテストが必要な領域に焦点を当てることで、コードの品質を維持および向上させることを目指しています。
カバレッジ結果
のコードカバレッジステータスを簡単に把握するには ultralytics
python パッケージには、バッジとサンバースト図が含まれています。 ultralytics
カバレッジ結果。これらの画像は、テストでカバーされているコードの割合を示しており、テストの取り組みを一目で評価できます。詳細については、こちらをご覧ください。 https://codecov.io/github/ultralytics/ultralytics.
リポジトリ | コードカバレッジ |
---|---|
Ultralytics |
下のサンバースト図では、最も内側の円がプロジェクト全体であり、中心から離れるほどフォルダーになり、最後に単一のファイルになります。各スライスのサイズと色は、それぞれステートメントの数とカバレッジを表しています。
よくある質問
Ultralytics における継続的インテグレーション(CI)とは何ですか?
Ultralyticsにおける継続的インテグレーション(CI)は、高品質の基準を保証するために、コードの変更を自動的に統合およびテストすることを含みます。当社のCIセットアップには、単体テスト、リンティングチェック、および包括的なテストの実行が含まれます。さらに、Dockerデプロイメント、破損したリンクのチェック、CodeQL分析(セキュリティ脆弱性のため)、およびソフトウェアをパッケージ化して配布するためのPyPI公開を実行します。
Ultralyticsは、ドキュメントやコード内のリンク切れをどのようにチェックしていますか?
Ultralyticsでは、リンク切れをチェックするために特定のCIアクションを使用しています。これは、markdownファイルとHTMLファイル内のリンク切れをスキャンして特定することにより、ドキュメントの整合性を維持するのに役立ち、ユーザーが常に正確で有効なリソースにアクセスできるようにします。
Ultralyticsのコードベースにおいて、CodeQL分析が重要なのはなぜですか?
CodeQL analysisは、潜在的なセキュリティ脆弱性を見つけ、高品質の標準を維持するためのセマンティックコード分析を実行するため、Ultralyticsにとって非常に重要です。CodeQLを使用することで、コード内のリスクを事前に特定して軽減し、堅牢で安全なソフトウェアソリューションを提供できます。
Ultralyticsは、デプロイメントにDockerをどのように活用していますか?
Ultralyticsは、専用のCIアクションを通じてプロジェクトのデプロイメントを検証するためにDockerを利用しています。このプロセスにより、Dockerfileと関連スクリプトが正しく機能することが保証され、スケーラブルで信頼性の高いAIソリューションに不可欠な、一貫性のある再現可能なデプロイメント環境が実現します。
Ultralyticsにおける自動PyPI公開の役割は何ですか?
自動化されたPyPI publishingにより、プロジェクトをエラーなくパッケージ化して公開できます。このステップは、Ultralytics の python パッケージを配布するために不可欠であり、ユーザーはPython Package Index (PyPI)を介してツールを簡単にインストールして使用できます。
Ultralyticsは、コードカバレッジをどのように測定し、それはなぜ重要ですか?
Ultralyticsは、Codecovと統合することにより、コードカバレッジを測定し、テスト中にコードベースのどの程度が実行されるかについての洞察を提供します。高いコードカバレッジは、十分にテストされたコードを示し、バグが発生しやすい未テストの領域を特定するのに役立ちます。詳細なコードカバレッジメトリクスは、メインリポジトリに表示されるバッジまたはCodecovで直接確認できます。