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

Непрерывная интеграция (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
yolov3YOLOv3 CIПубликуй образы докеровПроверь битые ссылкиCodeQL
yolov5YOLOv5 CIПубликуй образы докеровПроверь битые ссылкиCodeQL
ultralyticsultralytics CIПубликуй образы докеровПроверь битые ссылкиCodeQLОпубликуй в PyPI и разверни документы
hub-sdkHUB-SDK CIПроверь битые ссылкиCodeQLPublish to PyPI
ВтулкаHUB CIПроверь битые ссылки
mkdocsUltralytics ActionsCodeQLPublish to PyPI
thopUltralytics ActionsCodeQLPublish to PyPI
actionsUltralytics ActionsCodeQLPublish to PyPI
docsUltralytics ActionsПроверь битые ссылкиПроверь доменыpages-build-deployment
handbookUltralytics ActionsПроверь битые ссылки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.

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

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

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.

📅 Создано 1 год назад ✏️ Обновлено 1 месяц назад

Комментарии