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 trong 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 thử chúng một cách tự động. CI cho phép chúng tôi duy trì chất lượng mã nguồn cao bằng cách phát hiện các vấn đề sớm và thường xuyên trong quy 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 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 việc chạy 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 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 tồn tại 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ã nguồn 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 có bất kỳ lỗi nào 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 tra CI này cho các repository chính của chúng tôi:
| Repository | CI | Docker Deployment | Broken Links | CodeQL | PyPI and 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 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ị thất bại, sẽ rất hữu ích nếu bạn có thể báo cáo thông 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 xem xét mã nguồn thủ công 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 chỉ số đại diện cho phần trăm codebase của bạn được thực thi khi chạy các bài kiểm tra. Nó cung cấp thông tin chi tiết về việc các bài kiểm tra của bạn thực thi mã nguồn tốt như thế nào và có thể rất quan trọng trong việc xác định các phần chưa được kiểm thử trong ứng dụng của bạn. Tỷ lệ bao phủ mã cao thường liên quan đến khả năng xảy ra 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 việc không có khiếm khuyết. Nó chỉ đơn giản cho biết phần nào của mã nguồn đã đượ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 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ã nguồn của bạn, cho biết những dòng nào đã được kiểm tra.
Bằng cách tích hợp với Codecov, chúng tôi hướng tới mục tiêu duy trì và cải thiện chất lượng mã nguồn bằng cách tập trung vào các khu 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ã của gói Python ultralytics, chúng tôi đã thêm một huy hiệu và hình ảnh mặt trời (sunburst) hiển thị kết quả độ bao phủ của ultralytics. Những hình ảnh này cho thấy 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 thông tin đầy đủ, hãy truy cập báo cáo Codecov của Ultralytics.
| Repository | Độ bao phủ mã (Code Coverage) |
|---|---|
| ultralytics |
Trong đồ họa mặt trời 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 duy nhất. 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ủ tương ứng.
Câu hỏi thường gặp (FAQ)
Tích hợp liên tục (CI) trong Ultralytics là gì?
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 thử 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 chúng tôi.
Ultralytics 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 hành động 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 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à cập nhật.
Tại sao phân tích CodeQL lại quan trọng đối với codebase của Ultralytics?
CodeQL analysis rất quan trọng đối với Ultralytics vì nó thực hiện phân tích ngữ nghĩa mã nguồn để 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ã nguồn, giúp chúng tôi cung cấp các software solutions mạnh mẽ và bảo mật.
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 and associated scripts của chúng tôi 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, đ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 tự động xuất bản PyPI trong Ultralytics là gì?
Việc tự động 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 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ủ mã bằng cách tích hợp với Codecov, cung cấp thông tin chi tiết về bao nhiêu phần trăm codebase được thực thi trong quá trình kiểm thử. Độ bao phủ mã cao có thể cho thấy mã nguồn đã được kiểm thử tốt, giúp khám phá các khu vực chưa được kiểm thử 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á thông 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.