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à tự động kiểm tra chúng. CI cho phép chúng tôi duy trì mã chất lượng cao bằng cách phát hiện các sự cố 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 cơ sở mã của chúng tôi.
Các 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à 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ữ.
- Triển Khai Docker: Kiểm tra này kiểm tra việc triển khai dự án bằng Docker để đảm bảo Dockerfile và các script liên quan hoạt động chính xác.
- Đường Dẫn Hỏng: Kiểm tra này quét cơ sở mã để tìm bất kỳ đường dẫn hỏng hoặc không hoạt động nào 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.
- Phát Hành PyPI: Kiểm tra này kiểm tra xem dự án có thể được đóng gói và phát hành lên PyPi mà không có bất kỳ lỗi nào 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 lưu trữ chính của chúng tôi:
Kho lưu trữ | CI | Triển Khai Docker | Đường Dẫn Hỏng | CodeQL | Phát Hành PyPI và Tài Liệu |
---|---|---|---|---|---|
yolov3 | |||||
yolov5 | |||||
ultralytics | |||||
yolo-ios-app | |||||
yolo-flutter-app | |||||
hub | |||||
hub-sdk | |||||
thop | |||||
actions | |||||
mkdocs | |||||
docs | |||||
sổ tay hướng dẫn |
Mỗi badge hiển thị trạng thái của lần chạy thử nghiệm CI tương ứng gần nhất trên main
nhánh của kho lưu trữ tương ứng. Nếu một thử nghiệm thất bại, badge sẽ hiển thị trạng thái "failing" (thất bại) và nếu nó thành công, nó sẽ hiển thị trạng thái "passing" (thành công).
Nếu bạn nhận thấy một thử nghiệm bị lỗi, sẽ rất hữu ích nếu bạn có thể báo cáo nó thông qua một issue trên GitHub trong kho lưu trữ tương ứng.
Hãy nhớ rằng, một thử nghiệm CI thành công không có nghĩa là mọi thứ đều hoàn hảo. Bạn nên luôn xem xét thủ công code trước khi triển khai hoặc hợp nhất các thay đổi.
Độ bao phủ Mã
Độ bao phủ code là một số liệu thể hiện tỷ lệ phần trăm codebase của bạn được thực thi khi các thử nghiệm của bạn chạy. Nó cung cấp thông tin chi tiết về mức độ các thử nghiệm của bạn kiểm tra code 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 của ứng dụng. Tỷ lệ phần trăm bao phủ code 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 quan trọng là phải hiểu rằng độ bao phủ code không đảm bảo không có lỗi. Nó chỉ đơn giản chỉ ra những phần nào của code đã được thực thi bởi các thử nghiệm.
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ủ code. 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 trực tiếp trên code của bạn, cho biết những dòng nào đã được bao phủ.
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 code 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 kiểm tra thêm.
Kết quả Độ bao phủ
Để nhanh chóng xem lướt qua trạng thái bao phủ code của ultralytics
gói python, chúng tôi đã bao gồm một badge và hình ảnh sunburst về ultralytics
kết quả bao phủ. Những hình ảnh này hiển thị tỷ lệ phần trăm code được bao phủ bởi các thử nghiệm của chúng tôi, cung cấp một số liệu tổng quan nhanh về nỗ lực thử nghiệm của chúng tôi. Để biết đầy đủ chi tiết, vui lòng xem https://codecov.io/github/ultralytics/ultralytics.
Kho lưu trữ | Độ bao phủ Mã |
---|---|
ultralytics |
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 tâm là các thư mục, sau đó là một tệp duy nhất. Kích thước và màu sắc của mỗi lát cắt thể hiện số lượng câu lệnh và độ bao phủ tương ứng.
Câu hỏi thường gặp
Tích hợp Liên tục (CI) trong Ultralytics là gì?
Tích hợp liên tục (CI) trong Ultralytics bao gồm tự động tích hợp và kiểm tra các thay đổi code để đả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 kiểm thử đơn vị, kiểm tra linting và các 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 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 kiểm tra các liên kết hỏng trong tài liệu và mã như thế nào?
Ultralytics sử dụng một hành động CI cụ thể để kiểm tra các liên kết hỏng 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 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à đang hoạt động.
Tại sao phân tích CodeQL lại quan trọng đối với codebase của Ultralytics?
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 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.
Ultralytics sử dụng Docker để triển khai như thế nào?
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. Quy trình này đảm bảo rằng Dockerfile và các script 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, đ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.
Vai trò của việc xuất bản PyPI tự động trong Ultralytics là gì?
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ố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ã như thế nào và tại sao nó lại quan trọng?
Ultralytics đo lường độ bao phủ code bằng cách tích hợp với Codecov, cung cấp thông tin chi tiết về mức độ codebase được thực thi trong quá trình kiểm thử. Độ bao phủ code cao có thể cho biết code được kiểm tra tốt, giúp khám phá các khu vực chưa được kiểm tra có thể dễ bị lỗi. Các số liệu bao phủ code chi tiết có thể được khám phá thông qua các badge được 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.