YOLO Vision 2026:

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 phát triển phần mềm, bao gồm việc tích hợp các thay đổi và kiểm thử chúng một cách tự động. CI cho phép chúng tôi duy trì mã nguồn chất lượng cao bằng cách phát hiện các 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 tra CI khác nhau để đảm bảo chất lượng và tính toàn vẹn của codebase.

Các CI Action#

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

  • CI: Đây là bài kiểm tra CI chính của chúng tôi, bao gồm chạy các unit test, kiểm tra linting và đôi khi là các bài kiểm tra toàn diện hơn tùy thuộc vào kho lưu trữ.
  • Docker Deployment: Bài kiểm tra này kiểm tra quá trình triển khai dự án bằng Docker để đảm bảo rằng Dockerfile và các tập lệnh liên quan hoạt động chính xác.
  • Broken Links: Bài kiểm tra này quét cơ sở mã để tìm các liên kết bị hỏng hoặc chết trong các tệp markdown hoặc HTML của chúng tôi.
  • CodeQL: CodeQL là một công cụ từ GitHub thực hiện phân tích ngữ nghĩa trên mã của chúng tôi, giúp tìm ra các lỗ hổng bảo mật tiềm ẩn và duy trì mã chất lượng cao.
  • PyPI Publishing: Bài kiểm tra này kiểm tra xem dự án có thể được đóng gói và xuất bản lên PyPI mà không gặp lỗi nào hay không.

Kết quả CI#

Dưới đây là bảng hiển thị trạng thái của các bài kiểm tra CI này cho các repository chính của chúng tôi:

RepositoryCIDocker DeploymentBroken LinksCodeQLPyPI và Docs Publishing
yolov3YOLOv3 CIPublish Docker ImagesCheck Broken linksCodeQL
yolov5YOLOv5 CIPublish Docker ImagesCheck Broken linksCodeQL
ultralyticsultralytics CIPublish Docker ImagesCheck Broken linksCodeQLPublish to PyPI and Deploy Docs Conda Builds
yolo-ios-appiOS App CICodeQLPublish iOS App
yolo-flutter-appFlutter App CICodeQLPublish to pub.dev
thopUltralytics ActionsCodeQLPublish to PyPI
actionsActions CICodeQLPublish to PyPI
mkdocsUltralytics ActionsCodeQLPublish to PyPI
docsUltralytics ActionsCheck Broken links
handbookUltralytics ActionsCheck Broken links
starsUltralytics ActionsUpdate Analytics
CLIPCLIP CI

Mỗi huy hiệu hiển thị trạng thái của lần chạy gần nhất của bài kiểm tra CI tương ứng trên nhánh main của kho lưu trữ tương ứng. Nếu một bài kiểm tra thất bại, huy hiệu sẽ hiển thị trạng thái "failing", và nếu nó vượt qua, nó sẽ hiển thị trạng thái "passing".

Nếu bạn thấy một bài kiểm tra bị lỗi, sẽ rất hữu ích nếu bạn có thể báo cáo qua một GitHub issue trong repository tương ứng.

Hãy nhớ rằng, một bài kiểm tra CI thành công không có nghĩa là mọi thứ đều hoàn hảo. Luôn khuyến khích việc xem xét thủ công mã nguồn trước khi triển khai hoặc hợp nhất các thay đổi.

Độ bao phủ mã (Code Coverage)#

Độ bao phủ mã là một số liệu biểu thị tỷ lệ phần trăm codebase của bạn được thực thi khi các bài kiểm tra chạy. Nó cung cấp cái nhìn sâu sắc về mức độ mà các bài kiểm tra của bạn bao quát mã nguồn và có thể rất quan trọng trong việc xác định các phần chưa được kiểm tra của ứng dụng. Tỷ lệ bao phủ mã cao thường liên quan đến khả năng xuất hiện lỗi thấp hơn. Tuy nhiên, điều cần thiết là phải hiểu rằng độ bao phủ mã không đảm bảo sự không có khiếm khuyết. Nó chỉ chỉ ra phần nào của mã đã được thực thi bởi các bài kiểm tra.

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

Tại Ultralytics, chúng tôi đã tích hợp các kho lưu trữ 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ủ mã nguồn. Codecov cung cấp thông tin chi tiết, so sánh độ bao phủ giữa các commit và lớp phủ trực quan ngay trên mã nguồn của bạn, cho biết dòng nào đã được bao phủ.

Bằng cách tích hợp với Codecov, chúng tôi hướng tới việc duy trì và cải thiện chất lượng mã của mình bằng cách tập trung vào các lĩnh vực có thể dễ xảy ra lỗi hoặc cần kiểm tra thêm.

Kết quả độ bao phủ#

Để nhanh chóng nắm bắt trạng thái độ bao phủ mã nguồn của các kho lưu trữ, chúng tôi đã bao gồm các huy hiệu Codecov và bản xem trước sunburst cho mỗi dự án được theo dõi. Vòng trong cùng của mỗi biểu đồ sunburst là toàn bộ dự án, di chuyển ra xa tâm là các thư mục và cuối cùng là một tệp đơn lẻ. Kích thước và màu sắc của mỗi lát cắt đại diện cho số lượng câu lệnh và độ bao phủ. Để biết chi tiết đầy đủ, hãy truy cập Ultralytics Codecov organization.

Câu hỏi thường gặp#

  • Continuous Integration (CI) tại Ultralytics bao gồm việc tự động tích hợp và kiểm tra các thay đổi mã nguồn để đảm bảo các 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 tests, linting checks, and comprehensive tests. Ngoài ra, chúng tôi thực hiện Docker deployment, broken link checks, CodeQL analysis để tìm các lỗ hổng bảo mật và PyPI publishing để đóng gói và phân phối phần mềm của mình.

  • Ultralytics sử dụng một tác vụ CI cụ thể để check for broken links trong các tệp markdown và HTML của chúng tôi. Đ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 chết hoặc bị hỏng, đảm bảo rằng người dùng luôn có quyền truy cập vào các tài nguyên chính xác và hoạt động.

  • CodeQL analysis rất quan trọng đối với Ultralytics vì nó thực hiện phân tích mã ngữ nghĩa để tìm ra các lỗ hổng bảo mật tiềm ẩn và duy trì các 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 mã của mình, giúp chúng tôi cung cấp software solutions mạnh mẽ và bảo mật.

  • Ultralytics sử dụng Docker để xác thực việc triển khai các dự án của chúng tôi thông qua một tác vụ CI chuyên dụng. Quá trình này đảm bảo rằng Dockerfile and associated scripts của chúng tôi đang 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 tạo, điều này rất quan trọng đối với các giải pháp AI có thể mở rộng và đáng tin cậy.

  • Tự động hóa PyPI publishing đảm bảo rằng các dự án của chúng tôi 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 gói Python của Ultralytics, cho phép người dùng dễ dàng cài đặt và sử dụng các công cụ của chúng tôi thông qua Python Package Index (PyPI).

  • Ultralytics đo lường độ bao phủ mã nguồn bằng cách tích hợp với Codecov, cung cấp thông tin chi tiết về mức độ cơ sở mã được thực thi trong quá trình kiểm tra. Độ bao phủ mã nguồn cao có thể cho thấy mã đã được kiểm tra kỹ lưỡng, giúp phát hiện các khu vực chưa được kiểm tra có thể dễ sinh ra lỗi. Các số liệu chi tiết về độ bao phủ mã nguồn có thể được khám phá qua các huy hiệu hiển thị trên các kho lưu trữ chính của chúng tôi hoặc trực tiếp trên Codecov.

Bình luận