Ultralytics YOLO27:
Get Started

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

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

Этапы CI#

Краткое описание этапов CI:

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

Результаты CI#

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

РепозиторийCIРазвертывание DockerБитые ссылкиCodeQLПубликация в PyPI и документации
yolov3YOLOv3 CIПубликация образов DockerПроверка битых ссылокCodeQL
yolov5YOLOv5 CIПубликация образов DockerПроверка битых ссылокCodeQL
ultralyticsultralytics CIПубликация образов DockerПроверка битых ссылокCodeQLПубликация в PyPI Публикация документации Сборки Conda
sdkSDK CICodeQLПубликация в PyPI
liteLite CICodeQL
openapiOpenAPI CICodeQL
skillsSkills CICodeQL
yolo-ios-appiOS App CICodeQLPublish iOS App
yolo-flutter-appFlutter App CICodeQLPublish to pub.dev
thopUltralytics ActionsCodeQLПубликация в PyPI
actionsActions CICodeQLПубликация в PyPI
mkdocsUltralytics ActionsCodeQLПубликация в PyPI
docsUltralytics ActionsПроверка битых ссылок
handbookUltralytics ActionsПроверка битых ссылок
starsUltralytics ActionsUpdate Analytics
CLIPCLIP CI

Каждый значок показывает статус последнего запуска соответствующего теста CI в ветке main соответствующего репозитория. Если тест завершится с ошибкой, значок покажет статус «с ошибкой», а если пройдет успешно — статус «успешно».

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

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

Покрытие кода#

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

Интеграция с codecov.io#

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

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

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

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

РепозиторийПокрытие кодаДиаграмма-солнечная вспышка
actionscodecovactions Codecov sunburst
ultralyticscodecovultralytics Codecov sunburst
inferencecodecovinference Codecov sunburst
yolo-flutter-appcodecovyolo-flutter-app Codecov sunburst
yolo-ios-appcodecovyolo-ios-app Codecov sunburst
llmcodecovllm Codecov sunburst
profilecodecovprofile Codecov sunburst
templatecodecovtemplate Codecov sunburst
template-rustcodecovtemplate-rust Codecov sunburst
replicatecodecovreplicate Codecov sunburst

Часто задаваемые вопросы#

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

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

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

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

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

Комментарии