継続的インテグレーション (CI)
継続的インテグレーション(CI)はソフトウェア開発に不可欠な側面であり、変更の統合と自動テストを含みます。CIにより、開発プロセスの早期かつ頻繁な段階で問題を検出し、高品質なコードを維持することができます。Ultralyticsでは、コードベースの品質と整合性を確保するために、さまざまなCIテストを利用しています。
CIアクション
当社のCIアクションの概要を以下に説明します:
- CI: これは当社の主要なCIテストであり、リポジトリに応じてユニットテスト、リンティングチェック、場合によってはより広範なテストを実行します。
- Docker Deployment: このテストでは、Dockerを使用してプロジェクトのデプロイをチェックし、Dockerfileと関連スクリプトが正しく動作することを確認します。
- Broken Links: このテストでは、マークダウンやHTMLファイル内の壊れたリンクやリンク切れをスキャンします。
- CodeQL: CodeQLはGitHubのツールであり、コードのセマンティック解析を実行して、潜在的なセキュリティの脆弱性を発見し、高品質なコードを維持するのに役立ちます。
- PyPI Publishing: このテストでは、プロジェクトがエラーなくパッケージ化され、PyPIに公開できるかどうかを確認します。
CI Results
主要リポジトリのCIテストのステータスを示す表を以下に示します:
| Repository | CI | Docker Deployment | Broken Links | CodeQL | PyPI and Docs Publishing |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| yolo-ios-app (App Store) | |||||
| yolo-flutter-app | |||||
| hub | |||||
| hub-sdk | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
各バッジは、それぞれのレポジトリの main ブランチで最後に行われたCIテストのステータスを示しています。テストが失敗した場合は「failing」ステータスが表示され、成功した場合は「passing」ステータスが表示されます。
テストの失敗に気づいた場合は、各リポジトリのGitHub issueで報告していただけると大変助かります。
CIテストが成功したからといって、すべてが完璧であるとは限らないことに留意してください。デプロイやマージの前に、必ず手動でコードを確認することをお勧めします。
Code Coverage
コードカバレッジは、テスト実行時にコードベースがどれだけ実行されたかを示す指標です。テストがコードをどの程度網羅しているかについての洞察を提供し、アプリケーションの未テスト部分を特定するために不可欠です。高いコードカバレッジは、一般的にバグの可能性が低いことと関連しています。ただし、コードカバレッジが欠陥のないことを保証するわけではないという点を理解しておくことが重要です。それは単に、コードのどの部分がテストによって実行されたかを示しているに過ぎません。
Integration with codecov.io
Ultralyticsでは、当社のリポジトリを codecov.io と統合しています。これはコードカバレッジを測定および視覚化するための人気のあるオンラインプラットフォームです。Codecovは詳細な洞察、コミット間のカバレッジ比較、コード上への直接的なビジュアルオーバーレイを提供し、どの行がカバーされているかを示します。
Codecovとの統合により、エラーが発生しやすい領域やさらなるテストが必要な領域に焦点を当てることで、コードの品質を維持・向上させることを目指しています。
Coverage Results
Pythonパッケージのコードカバレッジステータスを簡単に把握するために、ultralytics カバレッジ結果のバッジとサンバースト図を含めています。これらの画像は、テストによってカバーされたコードの割合を示し、テストの取り組みをひと目で把握できる指標を提供します。詳細については、ultralyticsUltralytics Codecov reportをご覧ください。.
| Repository | Code Coverage |
|---|---|
| ultralytics |
以下のサンバースト図では、最も内側の円がプロジェクト全体であり、中心から離れるにつれてフォルダー、最終的には個別のファイルとなります。各スライスのサイズと色は、それぞれステートメントの数とカバレッジを表しています。
FAQ
Ultralyticsにおける継続的インテグレーション(CI)とは何ですか?
Ultralyticsにおける継続的インテグレーション(CI)は、コード変更の自動統合とテストを含み、高品質な基準を確保します。当社のCIセットアップには、ユニットテスト、リンティングチェック、および包括的なテストが含まれます。さらに、Docker deployment, broken link checks, CodeQL analysis をセキュリティの脆弱性に対して実行し、PyPI publishing によりソフトウェアのパッケージ化と配布を行います。
Ultralyticsはどのようにドキュメントやコード内のリンク切れをチェックしていますか?
Ultralyticsは、特定のCIアクションを使用してcheck for broken linksをマークダウンおよびHTMLファイル内で行っています。これは、壊れたリンクやリンク切れをスキャンして特定することにより、ドキュメントの整合性を維持し、ユーザーが常に正確で最新のリソースにアクセスできるようにするのに役立ちます。
なぜCodeQL解析はUltralyticsのコードベースにとって重要ですか?
CodeQL analysis は、潜在的なセキュリティの脆弱性を発見し、高い品質基準を維持するためにセマンティックなコード解析を実行するため、Ultralyticsにとって極めて重要です。CodeQLにより、コード内のリスクを事前に特定し軽減できるため、堅牢で安全なsoftware solutions.
を提供できるようになります。
UltralyticsはどのようにDockerをデプロイに利用していますか?UltralyticsはDockerを採用し、専用のCIアクションを通じてプロジェクトのデプロイを検証します。このプロセスにより、Dockerfile and associated scripts
が正しく機能していることが確認され、スケーラブルで信頼性の高いAIソリューションに不可欠な、一貫した再現性のあるデプロイ環境が実現します。
Ultralyticsにおける自動PyPI公開の役割は何ですか?PyPI publishing自動化された Python Package Index (PyPI).
により、プロジェクトをエラーなくパッケージ化して公開できます。このステップは、UltralyticsのPythonパッケージを配布するために不可欠であり、ユーザーが
を介して簡単にツールをインストールし使用できるようにします。Ultralyticsはどのようにコードカバレッジを測定し、なぜそれが重要ですか?Ultralyticsは Ultralyticsはどのようにコードカバレッジを測定し、なぜそれが重要ですか?.