Bỏ để qua phần nội dung

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 liên quan đến việc tích hợp các thay đổi và kiểm tra chúng tự động. CI cho phép chúng tôi duy trì mã chất lượng cao bằng cách nắm bắt 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 các 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 cơ sở mã của chúng tôi.

Hành động CI

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

  • CI: Đây là thử nghiệm CI chính của chúng tôi bao gồm chạy các bài kiểm tra đơn vị, kiểm tra linting và đôi khi kiểm tra toàn diện hơn tùy thuộc vào kho lưu trữ.
  • Triển khai Docker: Kiểm thử này kiểm tra việc triển khai dự án bằng Docker để đảm bảo Dockerfile và các tập lệnh liên quan đang hoạt động chính xác.
  • Liên kết bị hỏng: Thử nghiệm này quét cơ sở mã cho bất kỳ liên kết bị hỏng hoặc chết nào trong markdown hoặc các tệp HTML.
  • Mã QL: 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.
  • Nhà xuất bản PyPI: Thử nghiệm 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 có bất kỳ 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 thử nghiệm CI này cho các kho chính của chúng tôi:

Kho CI Triển khai Docker Liên kết bị hỏng Mã QL Xuất bản PyPI và Docs
Yolov3 YOLOv3 CI Xuất bản hình ảnh Docker Kiểm tra Liên kết bị hỏng Mã QL
yolov5 YOLOv5 CI Xuất bản hình ảnh Docker Kiểm tra Liên kết bị hỏng Mã QL
ultralytics ultralytics CI Xuất bản hình ảnh Docker Kiểm tra Liên kết bị hỏng Mã QL Xuất bản lên PyPI và triển khai tài liệu
Trung tâm HUB CI Kiểm tra Liên kết bị hỏng
Documents Kiểm tra Liên kết bị hỏngKiểm tra tên miền trang-xây dựng-triển khai

Mỗi huy hiệu hiển thị trạng thái của lần chạy cuối cùng của thử nghiệm CI tương ứng trên main chi nhánh của kho lưu trữ tương ứng. Nếu bài kiểm tra không thành công, huy hiệu sẽ hiển thị trạng thái "không đạt" và nếu vượt qua, huy hiệu sẽ hiển thị trạng thái "đạt".

Nếu bạn nhận thấy một thử nghiệm thất bại, sẽ rất hữu ích nếu bạn có thể báo cáo nó thông qua sự cố GitHub trong kho lưu trữ 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. Bạn nên xem lại mã theo cách thủ công trước khi triển khai hoặc hợp nhất các thay đổi.

Phạm vi mã

Phạm vi mã là một chỉ số đại diện cho tỷ lệ phần trăm cơ sở mã của bạn được thực thi khi thử nghiệm của bạn chạy. Nó cung cấp cái nhìn sâu sắc về mức độ kiểm tra của bạn thực hiện mã của bạ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 trong ứng dụng của bạn. Tỷ lệ phần trăm bao phủ mã cao thường liên quan đến khả năng mắc lỗi thấp hơn. Tuy nhiên, điều cần thiết là phải hiểu rằng phạm vi mã không đảm bảo không có lỗi. Nó chỉ đơn thuần 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 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 phạm vi mã. Codecov cung cấp thông tin chi tiết, so sánh phạm vi bảo hiểm giữa các cam kết và lớp phủ trực quan trực tiếp trên mã của bạn, cho biết dòng nào được bảo hiểm.

Bằng cách tích hợp với Codecov, chúng tôi mong muốn 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 khu vực có thể dễ bị lỗi hoặc cần thử nghiệm thêm.

Kết quả bảo hiểm

Để nhanh chóng có được cái nhìn thoáng qua về trạng thái phạm vi mã của ultralytics python gói, chúng tôi đã bao gồm một huy hiệu và hình ảnh sunburst của ultralytics kết quả bảo hiểm. Những hình ảnh này cho thấy tỷ lệ phần trăm mã được bao phủ bởi các thử nghiệm của chúng tôi, cung cấp số liệu nhanh về các nỗ lực thử nghiệm của chúng tôi. Để biết chi tiết đầy đủ, vui lòng xem https://codecov.io/github/ultralytics/ultralytics.

Kho Phạm vi mã
ultralytics Codecov

Trong đồ họa sunburst bên dưới, vòng tròn trong cùng là toàn bộ dự án, di chuyển ra khỏi trung tâm là các thư mục sau đó, cuối cùng, một tệp duy nhất. Kích thước và màu sắc của mỗi lát được đại diện cho số lượng câu lệnh và phạm vi bảo hiểm, tương ứng.

Ultralytics Hình ảnh Codecov

FAQ

Tích hợp liên tục (CI) trong là gì Ultralytics?

Tích hợp liên tục (CI) trong Ultralytics liên quan đến việc tự động tích hợp và kiểm tra các thay đổi mã để đả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 thử nghiệm đơn vị, kiểm tra linting và kiểm tra 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 bị hỏng, phân tích CodeQL cho các lỗ hổng bảo mật và xuất bản PyPI để đóng gói và phân phối phần mềm của chúng tôi.

Ultralytics sử dụng một hành động CI cụ thể để kiểm tra các liên kết bị hỏng trong markdown và các tệp HTML. Điều này giúp duy trì tính toàn vẹn của tài liệu của chúng tôi 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à trực tiếp.

Tại sao phân tích CodeQL lại quan trọng đối với Ultralytics'Cơ sở mật mã?

Phân tích CodeQL 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 các giải pháp phần mềm mạnh mẽ và an toàn.

Làm thế nào Ultralytics sử dụng Docker để triển khai?

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 hành động CI chuyên dụng. Quá trình này đảm bảo rằng Dockerfile và các tập lệnh liên quan của chúng tôi hoạt động chính xác, cho phép các môi trường triển khai nhất quán và có thể tái tạo, 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.

Vai trò của xuất bản PyPI tự động trong là gì Ultralytics?

Xuất bản PyPI tự động đả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 có lỗi. Bước này rất cần thiết để phân phốiUltralytics' Python gói, 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 Chỉ số gói (PyPI).

Làm thế nào Ultralytics Đo lường phạm vi mã và tại sao nó lại quan trọng?

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



Đã tạo 2023-11-12, Cập nhật 2024-07-04
Tác giả: glenn-jocher (8), Burhan-Q (1)

Ý kiến