Ultralytics YOLO27:

Непрерывная интеграция (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 и документации
yolov3CI YOLOv3Публикация образов DockerПроверка битых ссылокCodeQL
yolov5CI YOLOv5Публикация образов DockerПроверка битых ссылокCodeQL
ultralyticsCI ultralyticsПубликация образов DockerПроверка битых ссылокCodeQLПубликация в PyPI и развёртывание документации Сборки Conda
sdkCI SDKПубликация в PyPI
yolo-ios-appCI приложения iOSCodeQLПубликация приложения iOS
yolo-flutter-appCI приложения FlutterCodeQLПубликация в pub.dev
thopДействия UltralyticsCodeQLПубликация в PyPI
actionsCI действийCodeQLПубликация в PyPI
mkdocsДействия UltralyticsCodeQLПубликация в PyPI
docsДействия UltralyticsПроверка битых ссылок
handbookДействия UltralyticsПроверка битых ссылок
starsДействия UltralyticsОбновление аналитики
CLIPCI CLIP

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

Если ты заметишь неработающий тест, будет здорово, если ты сообщишь об этом через 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 для упаковки и распространения нашего программного обеспечения.

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

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

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

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

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

Комментарии