Link to this sectionTí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.
Link to this sectionCá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 repository.
- Docker Deployment: Bài 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 tập lệnh liên quan đang hoạt động chính xác.
- Broken Links: Bài kiểm tra này quét codebase để tìm bất kỳ liên kết 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ã nguồn 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ì chất lượng mã 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.
Link to this sectionKế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:
| Repository | CI | Docker Deployment | Broken Links | CodeQL | PyPI và Docs Publishing |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| yolo-ios-app (App Store) | |||||
| yolo-flutter-app | |||||
| hub | |||||
| hub-sdk | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
Mỗi huy hiệu hiển thị trạng thái của lần chạy cuối cùng của bài kiểm tra CI tương ứng trên nhánh main của mỗi repository. 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.
Link to this sectionĐộ 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.
Link to this sectionTí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ủ mã. 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 trực tiếp trên mã 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 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.
Link to this sectionKết quả độ bao phủ#
Để có cái nhìn nhanh về trạng thái độ bao phủ mã của gói Python ultralytics, chúng tôi đã bao gồm một huy hiệu và hình ảnh sunburst về kết quả bao phủ của ultralytics. Những hình ảnh này hiển thị tỷ lệ phần trăm mã được bao phủ bởi các bài kiểm tra của chúng tôi, cung cấp một số liệu nhanh về nỗ lực kiểm thử. Để biết chi tiết đầy đủ, hãy truy cập báo cáo Codecov của Ultralytics.
| Repository | Độ bao phủ mã (Code Coverage) |
|---|---|
| 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 xa trung 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 đại diện cho số lượng câu lệnh và độ bao phủ tương ứng.
Link to this sectionCâu hỏi thường gặp#
Link to this sectionTí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 việc tự động tích hợp và kiểm thử 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 unit tests, linting checks, và các bài 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 hỏng, phân tích CodeQL để tìm 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.
Link to this sectionUltralytics kiểm tra các liên kết hỏng trong tài liệu và mã nguồn như thế nào?#
Ultralytics sử dụng một CI action cụ thể để kiểm tra 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à trực tiếp.
Link to this sectionTạ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 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à bảo mật.
Link to this sectionUltralytics 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 CI action 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 đang 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, đây là yếu 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.
Link to this sectionVai trò của việc tự động xuất bản PyPI trong Ultralytics là gì?#
Việc tự động xuất bản PyPI đả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).
Link to this sectionUltralytics đ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ủ mã bằng cách tích hợp với Codecov, cung cấp cái nhìn sâu sắc về bao nhiêu phần trăm codebase được thực thi trong quá trình kiểm tra. Độ bao phủ mã cao có thể chỉ ra mã đã được kiểm tra kỹ lưỡng, giúp khám phá các lĩnh vực chưa được kiểm tra có thể dễ xảy ra lỗi. Các số liệu chi tiết về độ bao phủ mã có thể được khám phá qua các huy hiệu hiển thị trên các repository chính của chúng tôi hoặc trực tiếp trên Codecov.