Ultralytics YOLO27:

Tích hợp liên tục (CI)#

Tích hợp liên tục (CI) là một khía cạnh thiết yếu của quá trình phát triển phần mềm, bao gồm việc tích hợp các thay đổi và tự động kiểm thử chúng. CI cho phép chúng tôi duy trì code chất lượng cao bằng cách phát hiện vấn đề sớm và thường xuyên trong quá trình phát triển. Tại Ultralytics, chúng tôi sử dụng nhiều bài kiểm thử CI khác nhau để đảm bảo chất lượng và tính toàn vẹn của codebase.

Các tác vụ CI#

Dưới đây là mô tả ngắn gọn về các tác vụ CI của chúng tôi:

  • CI: Đây là bài kiểm thử CI chính của chúng tôi, bao gồm chạy unit test, kiểm tra lint và đôi khi là các bài kiểm thử toàn diện hơn tùy thuộc vào repository.
  • Triển khai Docker: Bài kiểm thử này kiểm tra việc triển khai project bằng Docker để đảm bảo Dockerfile và các script liên quan hoạt động chính xác.
  • Liên kết hỏng: Bài kiểm thử này quét codebase để tìm các liên kết hỏng hoặc không còn hoạt động trong các file markdown hoặc HTML.
  • CodeQL: CodeQL là một công cụ của GitHub thực hiện phân tích ngữ nghĩa trên code, giúp tìm các lỗ hổng bảo mật tiềm ẩn và duy trì code chất lượng cao.
  • Xuất bản lên PyPI: Bài kiểm thử này kiểm tra xem project có thể được đóng gói và xuất bản lên PyPI mà không gặp lỗi hay không.

Kết quả CI#

Bảng dưới đây hiển thị trạng thái của các bài kiểm thử CI này đối với những repository chính của chúng tôi:

RepositoryCITriển khai DockerLiên kết hỏngCodeQLXuất bản lên PyPI và Docs
yolov3CI của YOLOv3Xuất bản Docker ImagesKiểm tra liên kết hỏngCodeQL
yolov5CI của YOLOv5Xuất bản Docker ImagesKiểm tra liên kết hỏngCodeQL
ultralyticsCI của ultralyticsXuất bản Docker ImagesKiểm tra liên kết hỏngCodeQLXuất bản lên PyPI và triển khai Docs Build Conda
sdkCI của SDKXuất bản lên PyPI
yolo-ios-appCI của ứng dụng iOSCodeQLXuất bản ứng dụng iOS
yolo-flutter-appCI của ứng dụng FlutterCodeQLXuất bản lên pub.dev
thopTác vụ UltralyticsCodeQLXuất bản lên PyPI
actionsCI của ActionsCodeQLXuất bản lên PyPI
mkdocsTác vụ UltralyticsCodeQLXuất bản lên PyPI
docsTác vụ UltralyticsKiểm tra liên kết hỏng
handbookTác vụ UltralyticsKiểm tra liên kết hỏng
starsTác vụ UltralyticsCập nhật Analytics
CLIPCI của CLIP

Mỗi badge hiển thị trạng thái của lần chạy gần nhất của bài kiểm thử CI tương ứng trên branch main của repository tương ứng. Nếu bài kiểm thử thất bại, badge sẽ hiển thị trạng thái "failing"; nếu thành công, badge sẽ hiển thị trạng thái "passing".

Nếu nhận thấy một bài kiểm thử đang thất bại, bạn có thể giúp ích rất nhiều bằng cách báo cáo vấn đề đó qua một GitHub issue trong repository tương ứng.

Hãy nhớ rằng một bài kiểm thử CI thành công không có nghĩa là mọi thứ đều hoàn hảo. Bạn luôn nên review code thủ công trước khi triển khai hoặc merge các thay đổi.

Độ bao phủ code#

Độ bao phủ code là một metric biểu thị phần trăm codebase được thực thi khi chạy các bài kiểm thử. Metric này cung cấp thông tin về mức độ các bài kiểm thử thực thi code của bạn và có thể đóng vai trò quan trọng trong việc xác định những phần chưa được kiểm thử của ứng dụng. Tỷ lệ độ bao phủ code cao thường gắn với khả năng xuất hiện bug thấp hơn. Tuy nhiên, điều quan trọng cần hiểu là độ bao phủ code không đảm bảo không có defect. Metric này chỉ cho biết những phần nào của code đã được các bài kiểm thử thực thi.

Tích hợp với codecov.io#

Tại Ultralytics, chúng tôi đã tích hợp các repository của mình với codecov.io, một nền tảng trực tuyến phổ biến để đo lường và trực quan hóa độ bao phủ code. Codecov cung cấp thông tin chi tiết, so sánh độ bao phủ giữa các commit và các lớp phủ trực quan ngay trên code, cho biết những dòng nào đã được bao phủ.

Thông qua việc tích hợp với Codecov, chúng tôi hướng đến duy trì và cải thiện chất lượng code bằng cách tập trung vào những khu vực có thể dễ phát sinh lỗi hoặc cần được kiểm thử thêm.

Kết quả độ bao phủ#

Để nhanh chóng nắm được trạng thái độ bao phủ code của các repository, chúng tôi đã thêm badge Codecov và bản xem trước sunburst cho từng project được theo dõi. Vòng tròn trong cùng của mỗi sunburst là toàn bộ project; đi từ tâm ra ngoài lần lượt là các folder và cuối cùng là một file đơn lẻ. Kích thước và màu sắc của mỗi lát lần lượt biểu thị số lượng statement và độ bao phủ. Để xem đầy đủ chi tiết, hãy truy cập tổ chức Ultralytics Codecov.

FAQ#

  • Tích hợp liên tục (CI) trong Ultralytics bao gồm việc tự động tích hợp và kiểm thử các thay đổi trong code để đảm bảo tiêu chuẩn chất lượng cao. Thiết lập CI của chúng tôi bao gồm chạy unit test, kiểm tra lint và các bài kiểm thử toàn diện. Ngoài ra, chúng tôi thực hiện triển khai Docker, kiểm tra liên kết hỏng, phân tích CodeQL để tìm lỗ hổng bảo mật và xuất bản lên PyPI nhằm đóng gói và phân phối phần mềm.

  • Ultralytics sử dụng một tác vụ CI cụ thể để kiểm tra liên kết hỏng trong các file markdown và HTML. Điều này giúp duy trì tính toàn vẹn của tài liệu bằng cách quét và xác định các liên kết không còn hoạt động hoặc bị hỏng, đảm bảo người dùng luôn truy cập được các tài nguyên chính xác và đang hoạt động.

  • Phân tích CodeQL rất quan trọng đối với Ultralytics vì thực hiện phân tích ngữ nghĩa code để tìm các lỗ hổng bảo mật tiềm ẩn và duy trì tiêu chuẩn chất lượng cao. Với CodeQL, chúng tôi có thể chủ động xác định và giảm thiểu rủi ro trong code, giúp cung cấp các giải pháp phần mềm mạnh mẽ và an toàn.

  • Ultralytics sử dụng Docker để xác thực việc triển khai các project thông qua một tác vụ CI chuyên dụng. Quy trình này đảm bảo Dockerfile và các script liên quan hoạt động chính xác, cho phép tạo ra các môi trường triển khai nhất quán và có thể tái lập, vốn rất quan trọng đối với các giải pháp AI có khả năng mở rộng và đáng tin cậy.

  • Xuất bản tự động lên PyPI đảm bảo các project có thể được đóng gói và xuất bản mà không gặp lỗi. Bước này rất cần thiết để phân phối các package Python của Ultralytics, cho phép người dùng dễ dàng cài đặt và sử dụng công cụ của chúng tôi thông qua Chỉ mục gói Python (PyPI).

  • Ultralytics đo lường độ bao phủ code bằng cách tích hợp với Codecov, cung cấp thông tin về mức độ codebase được thực thi trong quá trình kiểm thử. Độ bao phủ code cao có thể cho thấy code đã được kiểm thử tốt, giúp phát hiện những khu vực chưa được kiểm thử có thể dễ phát sinh bug. Bạn có thể xem các metric độ bao phủ code chi tiết thông qua các badge được hiển thị trên những repository chính của chúng tôi hoặc trực tiếp trên Codecov.

Bình luận