Непрерывная интеграция (CI)
Непрерывная интеграция (CI) — это важный аспект разработки программного обеспечения, который включает автоматическую интеграцию и тестирование изменений. CI позволяет нам поддерживать высокое качество кода, выявляя проблемы на ранних этапах и часто в процессе разработки. В Ultralytics мы используем различные CI-тесты, чтобы обеспечить качество и целостность нашей кодовой базы.
CI-действия
Вот краткое описание наших CI-действий:
- CI: Это наш основной CI-тест, который включает запуск модульных тестов, проверок линтинга, а иногда и более комплексных тестов в зависимости от репозитория.
- Docker Deployment: Этот тест проверяет развертывание проекта с помощью Docker, чтобы убедиться, что Dockerfile и связанные скрипты работают правильно.
- Broken Links: Этот тест сканирует кодовую базу на наличие неработающих или битых ссылок в наших markdown или HTML файлах.
- CodeQL: CodeQL — это инструмент от GitHub, который выполняет семантический анализ нашего кода, помогая находить потенциальные уязвимости в безопасности и поддерживать высокое качество кода.
- PyPI Publishing: Этот тест проверяет, может ли проект быть упакован и опубликован в PyPI без каких-либо ошибок.
Результаты CI
Ниже приведена таблица со статусом этих CI-тестов для наших основных репозиториев:
| Репозиторий | CI | Docker Deployment | Broken Links | CodeQL | PyPI and Docs Publishing |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| yolo-ios-app (App Store) | |||||
| yolo-flutter-app | |||||
| hub | |||||
| hub-sdk | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
Каждый значок показывает статус последнего запуска соответствующего CI-теста в ветке main соответствующего репозитория. Если тест не пройден, значок будет отображать статус "failing", а если пройден — статус "passing".
Если ты заметишь, что тест не пройден, будет очень полезно, если ты сообщишь об этом через GitHub issue в соответствующем репозитории.
Помни, что успешный CI-тест не означает, что всё идеально. Всегда рекомендуется вручную проверять код перед развертыванием или слиянием изменений.
Покрытие кода
Покрытие кода — это метрика, которая представляет собой процент твоей кодовой базы, выполняемый при запуске тестов. Она дает представление о том, насколько хорошо твои тесты охватывают код, и может быть важна для выявления непротестированных частей твоего приложения. Высокий процент покрытия кода часто связан с меньшей вероятностью возникновения ошибок. Однако важно понимать, что покрытие кода не гарантирует отсутствие дефектов. Оно лишь указывает, какие части кода были выполнены тестами.
Интеграция с codecov.io
В Ultralytics мы интегрировали наши репозитории с codecov.io, популярной онлайн-платформой для измерения и визуализации покрытия кода. Codecov предоставляет подробную информацию, сравнение покрытия между коммитами и визуальные наложения прямо на твой код, показывая, какие строки были покрыты.
Интегрируясь с Codecov, мы стремимся поддерживать и улучшать качество нашего кода, фокусируясь на областях, которые могут быть подвержены ошибкам или требуют дополнительного тестирования.
Результаты покрытия
Чтобы быстро получить представление о состоянии покрытия кода пакета Python ultralytics, мы включили значок и визуализацию солнечных лучей (sunburst) результатов покрытия ultralytics. Эти изображения показывают процент кода, охваченного нашими тестами, предлагая метрику наших усилий по тестированию для быстрого ознакомления. Для получения полной информации посети отчет Ultralytics Codecov.
| Репозиторий | Покрытие кода |
|---|---|
| ultralytics |
На графике sunburst ниже самый внутренний круг — это весь проект, по мере удаления от центра идут папки, и, наконец, отдельный файл. Размер и цвет каждого среза представляют количество инструкций и покрытие соответственно.
Часто задаваемые вопросы (FAQ)
Что такое непрерывная интеграция (CI) в Ultralytics?
Непрерывная интеграция (CI) в Ultralytics включает автоматическую интеграцию и тестирование изменений кода для обеспечения стандартов высокого качества. Наша настройка CI включает запуск модульных тестов, проверок линтинга и комплексных тестов. Кроме того, мы выполняем развертывание Docker, проверку битых ссылок, анализ CodeQL на наличие уязвимостей в безопасности и публикацию в PyPI для упаковки и распространения нашего программного обеспечения.
Как Ultralytics проверяет наличие битых ссылок в документации и коде?
Ultralytics использует специальное CI-действие для проверки битых ссылок в наших markdown и HTML файлах. Это помогает поддерживать целостность нашей документации путем сканирования и выявления неработающих или битых ссылок, гарантируя, что пользователи всегда имеют доступ к точным и актуальным ресурсам.
Почему анализ CodeQL важен для кодовой базы Ultralytics?
Анализ CodeQL критически важен для Ultralytics, так как он выполняет семантический анализ кода для поиска потенциальных уязвимостей безопасности и поддержания высоких стандартов качества. С помощью CodeQL мы можем проактивно выявлять и снижать риски в нашем коде, что помогает нам предоставлять надежные и безопасные программные решения.
Как Ultralytics использует Docker для развертывания?
Ultralytics применяет Docker для проверки развертывания наших проектов с помощью специального CI-действия. Этот процесс гарантирует, что наши Dockerfile и связанные скрипты работают корректно, обеспечивая согласованные и воспроизводимые среды развертывания, которые критически важны для масштабируемых и надежных AI-решений.
Какова роль автоматизированной публикации в PyPI в Ultralytics?
Автоматизированная публикация в PyPI гарантирует, что наши проекты могут быть упакованы и опубликованы без ошибок. Этот шаг важен для распространения Python-пакетов Ultralytics, позволяя пользователям легко устанавливать и использовать наши инструменты через Python Package Index (PyPI).
Как Ultralytics измеряет покрытие кода и почему это важно?
Ultralytics измеряет покрытие кода путем интеграции с Codecov, предоставляя информацию о том, какая часть кодовой базы выполняется во время тестов. Высокое покрытие кода может указывать на хорошо протестированный код, помогая обнаружить непротестированные области, которые могут быть подвержены ошибкам. Подробные метрики покрытия кода можно изучить с помощью значков, отображаемых в наших основных репозиториях, или непосредственно на Codecov.