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

Непрерывная интеграция (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 Изображение кодеков

ВОПРОСЫ И ОТВЕТЫ

Что такое непрерывная интеграция (Continuous Integration, CI) в Ultralytics?

Непрерывная интеграция (Continuous Integration, 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.



Создано 2023-11-12, Обновлено 2024-07-04
Авторы: glenn-jocher (8), Burhan-Q (1)

Комментарии