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

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

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

Действия CI

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

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

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

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

Репозиторий CI Развертывание Docker Сломанные ссылки CodeQL Публикация PyPI и Docs
йолов3 YOLOv3 CI Публикация образов Docker Проверьте битые ссылки CodeQL
yolov5 YOLOv5 CI Публикация образов Docker Проверьте битые ссылки CodeQL
ultralytics ultralytics CI Публикация образов Docker Проверьте битые ссылки CodeQL Публикация в PyPI и развертывание документации
hub-sdk HUB-SDK CI Проверьте битые ссылки CodeQL Публикация в PyPI
ступица HUB CI Проверьте битые ссылки
mkdocs Ultralytics Действия CodeQL Публикация в PyPI
топ Ultralytics Действия CodeQL Публикация в PyPI
действия Ultralytics Действия CodeQL Публикация в PyPI
docs Ultralytics Действия Проверьте битые ссылкиПроверка доменов pages-build-deployment
справочник Ultralytics Действия Проверьте битые ссылки pages-build-deployment

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

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

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

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

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

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

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

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

Результаты охвата

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

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

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

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

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Что такое непрерывная интеграция (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 (PyPI).

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

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

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

Комментарии