コンテンツにスキップ

継続的インテグレーション(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 YOLOv3 CI Dockerイメージを公開(Publish) リンク切れの確認 CodeQL
YOLOv5 YOLOv5 CI Dockerイメージを公開(Publish) リンク切れの確認 CodeQL
Ultralytics ultralytics CI Dockerイメージを公開(Publish) リンク切れの確認 CodeQL PyPIへの公開(Publish)とドキュメントのデプロイ Condaビルド
yolo-ios-app iOS App CI CodeQL iOS Appの公開
yolo-flutter-app Flutter App CI CodeQL pub.devへの公開
hub HUB CI リンク切れの確認
hub-sdk HUB-SDK CI リンク切れの確認 CodeQL PyPIへ公開(Publish)
thop Ultralytics Actions CodeQL PyPIへ公開(Publish)
アクション Ultralytics Actions CodeQL PyPIへ公開(Publish)
mkdocs Ultralytics Actions CodeQL PyPIへ公開(Publish)
ドキュメント Ultralytics Actions リンク切れの確認ドメインの確認 pages-build-deployment
ハンドブック Ultralytics Actions リンク切れの確認 pages-build-deployment

各バッジは、対応するCIテストの最後の実行の状態を示します。 main それぞれのレポジトリのブランチ。テストが失敗した場合、バッジには「失敗」ステータスが表示され、合格した場合は「合格」ステータスが表示されます。

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

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では、リンク切れをチェックするために特定の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で直接確認できます。



📅 1年前に作成 ✏️ 17日前に更新

コメント