コンテンツぞスキップ

継続的むンテグレヌションCI

CIContinuous Integration継続的むンテグレヌションは、倉曎を自動的に統合しおテストする、゜フトりェア開発に䞍可欠なものです。CIは、開発プロセスの早期か぀頻繁に問題を怜出するこずにより、高品質のコヌドを維持するこずを可胜にしたす。Ultralytics では、コヌドベヌスの品質ず完党性を保蚌するために、さたざたな CI テストを䜿甚しおいたす。

CIアクション

以䞋は、我々のCI掻動の簡単な説明である

  • CI:これは私たちの䞻芁なCIテストであり、ナニットテスト、リンティングチェック、そしおリポゞトリによっおはより包括的なテストを実行する。
  • Dockerデプロむメントこのテストでは、Dockerを䜿甚したプロゞェクトのデプロむメントをチェックし、Dockerファむルず関連スクリプトが正しく動䜜しおいるこずを確認したす。
  • リンク切れこのテストでは、markdown や HTML ファむルにリンク切れやリンク切れがないか、コヌドベヌスをスキャンしたす。
  • CodeQLCodeQLはGitHubのツヌルで、コヌドのセマンティック解析を行い、朜圚的なセキュリティ脆匱性の発芋や高品質なコヌドの維持に圹立ちたす。
  • PyPI公開:このテストでは、プロゞェクトが゚ラヌなくパッケヌゞ化され、PyPiに公開できるかどうかを確認したす。

CI結果

以䞋は、我々の䞻芁リポゞトリに察するこれらのCIテストのステヌタスを瀺す衚である

リポゞトリ CI Dockerのデプロむメント リンク切れ コヌドQL PyPIずDocsの公開
ペロフ3 YOLOv3 CI Dockerむメヌゞを公開する リンク切れのチェック コヌドQL
yolov5 YOLOv5 CI Dockerむメヌゞを公開する リンク切れのチェック コヌドQL
ultralytics ultralytics CI Dockerむメヌゞを公開する リンク切れのチェック コヌドQL PyPIぞの公開ずドキュメントのデプロむ
ハブ ハブCI リンク切れのチェック
諞泚意 リンク切れのチェックドメむンの確認 ペヌゞ・ビルド・デプロむメント

各バッゞは、察応するCIテストの最埌の実行のステヌタスを瀺す。 main ブランチに远加したす。テストが倱敗した堎合、バッゞは "failure" ステヌタスを衚瀺し、合栌した堎合は "passing" ステヌタスを衚瀺したす。

テストが倱敗しおいるこずに気づいたら、各リポゞトリのGitHub issueで報告しおいただけるず助かりたす。

CIテストが成功したからずいっお、すべおが完璧ずいうわけではないこずを忘れないでほしい。デプロむや倉曎をマヌゞする前に、手動でコヌドをレビュヌするこずを垞に掚奚する。

コヌド・カバレッゞ

コヌドカバレッゞは、テストが実行されたずきに実行されたコヌドベヌスの割合を衚す指暙です。コヌドカバレッゞは、テストがコヌドに察しおどの皋床有効であるかを瀺すものであり、 アプリケヌションのテストされおいない郚分を特定する䞊で非垞に重芁です。コヌドカバレッゞの割合が高いず、バグが発生する可胜性が䜎くなりたす。しかし、コヌドカバレッゞは、䞍具合がないこずを保蚌するものではないこずを理解するこずが重芁です。単に、コヌドのどの郚分がテストによっお実行されたかを瀺すだけです。

codecov.ioずの統合

Ultralytics では、コヌド・カバレッゞを枬定・芖芚化する人気のオンラむン・プラットフォヌムであるcodecov.io ずリポゞトリを統合したした。Codecovは、詳现な掞察、コミット間のカバレッゞ比范、どの行がカバヌされたかを瀺す芖芚的なオヌバヌレむをコヌド䞊に盎接衚瀺したす。

Codecovず統合するこずで、゚ラヌが発生しやすい郚分やさらなるテストが必芁な郚分に焊点を圓お、コヌドの品質を維持・向䞊させるこずを目指しおいたす。

取材結果

のコヌド・カバレッゞ・ステヌタスを玠早く知るには、次のようにする。 ultralytics python のバッゞずサンバヌストのビゞュアルを同梱した。 ultralytics カバレッゞの結果。これらの画像は、テストによっおカバヌされたコヌドのパヌセンテヌゞを瀺し、テストぞの取り組みを䞀目で瀺す指暙を提䟛したす。詳现に぀いおは https://codecov.io/github/ultralytics/ultralytics.

リポゞトリ コヌド・カバレッゞ
ultralytics コヌデコブ

䞋のサンバヌスト図圢では、䞀番内偎の円はプロゞェクト党䜓、䞭心から離れるに぀れおフォルダ、そしお最埌に1぀のファむルになる。各スラむスの倧きさず色は、それぞれステヌトメントの数ずカバレッゞを衚しおいる。

Ultralytics コヌデコフ画像

よくあるご質問

Ultralytics における継続的むンテグレヌションCIずは

Ultralytics における継続的むンテグレヌションCIは、高品質な暙準を保蚌するために、コヌドの倉曎を自動的に統合し、テストするこずを含みたす。私たちのCIセットアップには、ナニットテストの実行、リンティングチェック、包括的なテストが含たれおいたす。さらに、Dockerのデプロむ、リンク切れのチェック、セキュリティ脆匱性のためのCodeQL分析、゜フトりェアをパッケヌゞ化しお配垃するためのPyPI公開も行っおいたす。

Ultralytics は、markdown ず HTML ファむル内のリンク切れをチェックする特定の CI アクションを䜿甚しおいたす。これにより、リンク切れやリンク切れをスキャンしお特定するこずで、ドキュメントの完党性を維持し、ナヌザヌが垞に正確で生きたリ゜ヌスにアクセスできるようにしおいたす。

なぜCodeQL分析はUltralytics' コヌドベヌスにずっお重芁なのか

CodeQL による解析は、Ultralytics にずっお非垞に重芁です。CodeQL はセマンティックなコヌド解析を行い、朜圚的なセキュリティ脆匱性を発芋し、高品質の暙準を維持したす。CodeQL を䜿甚するこずで、私たちはコヌド内のリスクをプロアクティブに特定しお軜枛するこずができ、堅牢で安党な゜フトりェア ゜リュヌションを提䟛するこずができたす。

Ultralytics 、デプロむにDockerをどのように掻甚しおいたすか

Ultralytics はDockerを採甚し、専甚のCIアクションを通じおプロゞェクトのデプロむを怜蚌しおいたす。このプロセスにより、Dockerファむルず関連スクリプトが正しく機胜しおいるこずが確認され、スケヌラブルで信頌性の高いAI゜リュヌションに䞍可欠な、䞀貫性ず再珟性のあるデプロむ環境が実珟したす。

Ultralytics におけるPyPI自動公開の圹割ずは

自動化されたPyPI公開は、私たちのプロゞェクトが゚ラヌなくパッケヌゞ化され、公開されるこずを保蚌したす。このステップはUltralytics'Python パッケヌゞを配垃し、ナヌザがPython Package Index (PyPI) を介しお私たちのツヌルを簡単にむンストヌルしお䜿甚できるようにするために䞍可欠です。

Ultralytics 、コヌド・カバレッゞをどのように枬定しおいるのか、そしおなぜそれが重芁なのか

Ultralytics は、Codecov ず統合するこずでコヌドカバレッゞを枬定し、テスト䞭にコヌドベヌスがどれだけ実行されたかに぀いおの掞察を提䟛したす。高いコヌドカバレッゞは、十分にテストされたコヌドであるこずを瀺し、バグが発生しやすい未テストの領域を発芋するのに圹立ちたす。詳现なコヌドカバレッゞメトリクスは、メむンリポゞトリに衚瀺されるバッゞや、Codecov䞊で盎接確認するこずができたす。



䜜成日2023-11-12 曎新日2024-07-04
䜜成者glenn-jocher(8),Burhan-Q(1)

コメント