Meet YOLO26: next-gen vision AI.

Link to this sectionНепрерывная интеграция (CI)#

Непрерывная интеграция (CI) — это важный аспект разработки программного обеспечения, который включает автоматическую интеграцию и тестирование изменений. CI позволяет нам поддерживать высокое качество кода, выявляя проблемы на ранних этапах и на протяжении всего процесса разработки. В Ultralytics мы используем различные CI-тесты для обеспечения качества и целостности нашей кодовой базы.

Link to this sectionДействия CI#

Вот краткое описание наших действий в CI:

  • CI: Это наш основной CI-тест, который включает запуск модульных тестов, проверку линтерами, а иногда и более комплексные тесты в зависимости от репозитория.
  • Docker Deployment: Этот тест проверяет развертывание проекта с использованием Docker, чтобы убедиться, что Dockerfile и связанные с ним скрипты работают корректно.
  • Broken Links: Этот тест сканирует кодовую базу на наличие неработающих или битых ссылок в наших файлах markdown или HTML.
  • CodeQL: CodeQL — это инструмент от GitHub, который выполняет семантический анализ нашего кода, помогая находить потенциальные уязвимости в системе безопасности и поддерживать высокое качество кода.
  • PyPI Publishing: Этот тест проверяет, можно ли упаковать проект и опубликовать его в PyPI без каких-либо ошибок.

Link to this sectionРезультаты CI#

Ниже приведена таблица со статусами этих CI-тестов для наших основных репозиториев:

РепозиторийCIDocker DeploymentBroken LinksCodeQLPyPI and 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-app (App Store)iOS App CICodeQLPublish iOS App
yolo-flutter-appFlutter App CICodeQLPublish to pub.dev
hubHUB CICheck Broken links
hub-sdkHUB-SDK CICheck Broken linksCodeQLPublish to PyPI
thopUltralytics ActionsCodeQLPublish to PyPI
actionsActions CICodeQLPublish to PyPI
mkdocsUltralytics ActionsCodeQLPublish to PyPI
docsUltralytics ActionsCheck Broken linksCheck Domainspages-build-deployment
handbookUltralytics ActionsCheck Broken linkspages-build-deployment
starsUltralytics ActionsUpdate Analytics
CLIPCLIP CI

Каждый значок показывает статус последнего запуска соответствующего CI-теста в ветке main соответствующего репозитория. Если тест не пройден, значок будет отображать статус "failing", а если пройден — "passing".

Если ты заметил, что тест не пройден, будет очень полезно, если ты сообщишь об этом через GitHub issue в соответствующем репозитории.

Помни, что успешный CI-тест не означает, что всё идеально. Мы всегда рекомендуем вручную просматривать код перед развертыванием или слиянием изменений.

Link to this sectionПокрытие кода#

Покрытие кода — это показатель, который отражает процент кодовой базы, выполняемый при запуске тестов. Он дает представление о том, насколько хорошо твои тесты проверяют код, и может иметь решающее значение для выявления непротестированных частей твоего приложения. Высокий процент покрытия кода часто связан с меньшей вероятностью появления ошибок. Однако важно понимать, что покрытие кода не гарантирует отсутствие дефектов. Оно лишь указывает, какие части кода были выполнены тестами.

Link to this sectionИнтеграция с codecov.io#

В Ultralytics мы интегрировали наши репозитории с codecov.io, популярной онлайн-платформой для измерения и визуализации покрытия кода. Codecov предоставляет подробную аналитику, сравнение покрытия между коммитами и визуальные наложения непосредственно на твой код, показывающие, какие строки были покрыты.

Интегрируясь с Codecov, мы стремимся поддерживать и улучшать качество нашего кода, фокусируясь на областях, которые могут быть подвержены ошибкам или требуют дополнительного тестирования.

Link to this sectionРезультаты покрытия#

Чтобы быстро получить представление о статусе покрытия кода Python-пакета ultralytics, мы добавили значок и графическое представление (sunburst) результатов покрытия ultralytics. Эти изображения показывают процент кода, покрытого нашими тестами, предлагая быстрый доступ к метрикам наших усилий по тестированию. Для получения полной информации посети отчет Ultralytics Codecov.

РепозиторийПокрытие кода
ultralyticscodecov

На представленной ниже графике (sunburst) самый внутренний круг — это весь проект, по мере удаления от центра идут папки и, наконец, отдельный файл. Размер и цвет каждого сегмента представляют количество операторов и покрытие соответственно.

Ultralytics Codecov Image

Link to this sectionFAQ#

Link to this sectionЧто такое непрерывная интеграция (CI) в Ultralytics?#

Непрерывная интеграция (CI) в Ultralytics включает автоматическую интеграцию и тестирование изменений кода для обеспечения высоких стандартов качества. Наша настройка CI включает выполнение модульных тестов, проверку линтерами и комплексные тесты. Кроме того, мы выполняем развертывание Docker, проверку на наличие битых ссылок, анализ CodeQL на наличие уязвимостей в безопасности и публикацию в PyPI для упаковки и распространения нашего программного обеспечения.

Link to this sectionКак Ultralytics проверяет наличие битых ссылок в документации и коде?#

Ultralytics использует специальное действие CI для проверки на наличие битых ссылок в наших файлах markdown и HTML. Это помогает поддерживать целостность нашей документации, сканируя и выявляя мертвые или битые ссылки, гарантируя, что у тебя всегда есть доступ к точным и актуальным ресурсам.

Link to this sectionПочему анализ CodeQL важен для кодовой базы Ultralytics?#

Анализ CodeQL критически важен для Ultralytics, поскольку он выполняет семантический анализ кода для поиска потенциальных уязвимостей в безопасности и поддержания высоких стандартов качества. С помощью CodeQL мы можем проактивно выявлять и снижать риски в нашем коде, что помогает нам создавать надежные и безопасные программные решения.

Link to this sectionКак Ultralytics использует Docker для развертывания?#

Ultralytics применяет Docker для проверки развертывания наших проектов с помощью специального действия CI. Этот процесс гарантирует, что наш Dockerfile и связанные скрипты функционируют корректно, что позволяет создавать единообразные и воспроизводимые среды развертывания, которые критически важны для масштабируемых и надежных ИИ-решений.

Link to this sectionКакова роль автоматизированной публикации в PyPI в Ultralytics?#

Автоматизированная публикация в PyPI гарантирует, что наши проекты можно упаковывать и публиковать без ошибок. Этот шаг необходим для распространения Python-пакетов Ultralytics, позволяя тебе легко устанавливать и использовать наши инструменты через Python Package Index (PyPI).

Link to this sectionКак Ultralytics измеряет покрытие кода и почему это важно?#

Ultralytics измеряет покрытие кода путем интеграции с Codecov, предоставляя понимание того, какая часть кодовой базы выполняется во время тестов. Высокое покрытие кода может указывать на хорошо протестированный код, помогая выявить непротестированные области, которые могут быть подвержены ошибкам. Подробные метрики покрытия кода можно изучить с помощью значков, отображаемых в наших основных репозиториях, или непосредственно на Codecov.

Контрибьюторы

Комментарии