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