Непрерывная интеграция (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 | |||||
yolov5 | |||||
ultralytics | |||||
hub-sdk | |||||
ступица | |||||
mkdocs | |||||
топ | |||||
действия | |||||
docs | |||||
справочник |
Каждый значок показывает состояние последнего запуска соответствующего CI-теста на main
ветви соответствующего репозитория. Если тест не пройден, на бейдже будет отображаться статус "failing", а если пройден - статус "passing".
Если вы заметили, что тест не работает, будет очень полезно, если вы сообщите об этом через GitHub в соответствующем репозитории.
Помните, что успешное CI-тестирование не означает, что все идеально. Всегда рекомендуется вручную проверять код перед развертыванием или слиянием изменений.
Покрытие кода
Покрытие кода - это метрика, которая представляет собой процентное соотношение вашей кодовой базы, выполняемой при запуске тестов. Она дает представление о том, насколько хорошо ваши тесты выполняют код, и может иметь решающее значение для выявления непроверенных частей вашего приложения. Высокий процент покрытия кода часто ассоциируется с меньшей вероятностью появления ошибок. Однако важно понимать, что покрытие кода не гарантирует отсутствие дефектов. Оно лишь показывает, какие части кода были выполнены тестами.
Интеграция с codecov.io
На сайте Ultralytics мы интегрировали наши репозитории с codecov.io, популярной онлайн-платформой для измерения и визуализации покрытия кода. Codecov предоставляет подробную информацию, сравнение покрытия между коммитами и визуальные наложения непосредственно на ваш код, указывая, какие строки были покрыты.
Интеграция с Codecov позволяет нам поддерживать и улучшать качество нашего кода, обращая внимание на те области, которые могут быть подвержены ошибкам или нуждаются в дополнительном тестировании.
Результаты охвата
Чтобы быстро получить представление о состоянии покрытия кода ultralytics
python В пакет мы включили значок и изображение солнечных лучей. ultralytics
результаты покрытия. Эти изображения показывают процент кода, покрытого нашими тестами, и дают наглядное представление о наших усилиях по тестированию. Для получения подробной информации см. https://codecov.io/github/ultralytics/ultralytics.
Репозиторий | Покрытие кода |
---|---|
ultralytics |
На приведенном ниже графике в виде солнечного луча самый внутренний круг - это весь проект, от центра отходят папки и, наконец, один файл. Размер и цвет каждого фрагмента обозначают количество утверждений и охват, соответственно.
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Что такое непрерывная интеграция (CI) в Ultralytics?
Непрерывная интеграция (CI) в Ultralytics подразумевает автоматическую интеграцию и тестирование изменений кода для обеспечения высокого качества. Наша настройка CI включает в себя выполнение модульных тестов, проверку линтинга и комплексные тесты. Кроме того, мы выполняем развертывание Docker, проверку битых ссылок, анализ CodeQL на предмет уязвимостей безопасности и публикацию на PyPI для упаковки и распространения нашего программного обеспечения.
Как Ultralytics проверяет наличие неработающих ссылок в документации и коде?
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.