Перейти к содержимому

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

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

Действия информатора

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

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

Результаты КИ

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

Репозиторий CI Развертывание Docker Сломанные ссылки CodeQL Публикация PyPI и Docs
yolov3 YOLOv3 CI Публикуй образы докеров Проверь битые ссылки CodeQL
yolov5 YOLOv5 CI Публикуй образы докеров Проверь битые ссылки CodeQL
ultralytics ultralytics CI Публикуй образы докеров Проверь битые ссылки CodeQL Опубликуй в PyPI и разверни документы
Втулка HUB CI Проверь битые ссылки
docs Проверь битые ссылкиПроверь домены pages-build-deployment

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

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

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

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

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

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

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

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

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

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

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

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

Ultralytics Изображение кодеков



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (7), Burhan-Q (1)

Комментарии