Перейти к содержанию

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

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

CI Actions

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

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

CI Results

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

Репозиторий CI Развертывание Docker Неработающие ссылки CodeQL Публикация в PyPI и документации
yolov3 YOLOv3 CI Публикация Docker-образов Проверка неработающих ссылок CodeQL
yolov5 YOLOv5 CI Публикация Docker-образов Проверка неработающих ссылок CodeQL
ultralytics ultralytics CI Публикация Docker-образов Проверка неработающих ссылок CodeQL Публикация в PyPI и развертывание документации Сборки Conda
yolo-ios-app iOS App CI CodeQL Публикация iOS App
yolo-flutter-app CI для Flutter-приложений CodeQL Публикация на pub.dev
hub HUB CI Проверка неработающих ссылок
hub-sdk HUB-SDK CI Проверка неработающих ссылок CodeQL Публикация в PyPI
thop Ultralytics Actions CodeQL Публикация в PyPI
действия Ultralytics Actions CodeQL Публикация в PyPI
mkdocs Ultralytics Actions CodeQL Публикация в PyPI
документы Ultralytics Actions Проверка неработающих ссылокПроверка доменов pages-build-deployment
справочник Ultralytics Actions Проверка неработающих ссылок pages-build-deployment

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

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

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

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

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

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

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

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

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

Чтобы быстро получить представление о состоянии покрытия кода ultralytics python package, мы включили значок и визуализацию sunburst ultralytics Результаты покрытия. Эти изображения показывают процент кода, охваченного нашими тестами, предлагая краткий обзор наших усилий по тестированию. Для получения полной информации, пожалуйста, смотрите https://codecov.io/github/ultralytics/ultralytics.

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

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

Ultralytics Codecov Image

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

Что такое Continuous Integration (CI) в Ultralytics?

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

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

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

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

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

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

Какова роль автоматической публикации PyPI в Ultralytics?

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

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

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



📅 Создано 1 год назад ✏️ Обновлено 17 дней назад

Комментарии