Рекомендации по использованию непрерывной интеграции
Применяется к этой рекомендации по контрольным спискам операционной эффективности Azure Well-Architected Framework:
OE:04 | Оптимизируйте процессы разработки программного обеспечения и контроля качества, следуя проверенным отраслевым методикам разработки и тестирования. Для четкого назначения ролей стандартизируйте методики для различных компонентов, таких как инструменты, система управления версиями, шаблоны проектирования приложений, документация и руководства по стилю. |
---|
Связанное руководство. Повышение скорости | сборкиСтандартизация средств и процессов
По мере разработки, обновления или даже удаления кода интуитивно понятный и безопасный метод интеграции этих изменений в ветвь кода main позволяет разработчикам предоставлять преимущества.
Как разработчик вы можете вносить небольшие изменения в код, отправлять эти изменения в репозиторий кода и получать практически мгновенные отзывы о качестве, протестированном объеме и введенных ошибках. Этот процесс позволяет работать быстрее, с большей уверенностью и меньшим риском.
Непрерывная интеграция — это практика, в рамках которой системы управления версиями интегрируются с конвейерами разработки ПО для предоставления автоматизированных механизмов сборки, тестирования и получения отзывов для команд разработчиков.
Ключевые стратегии проектирования
Непрерывная интеграция — это практика разработки программного обеспечения, которую разработчики используют для регулярной интеграции обновлений программного обеспечения в систему управления версиями.
Процесс непрерывной интеграции начинается, когда инженер создает запрос на вытягивание GitHub, чтобы сообщить системе CI о готовности изменений кода к интеграции. В идеале процесс интеграции проверяет код на соответствие нескольким базовым показателям и тестам. Затем он предоставляет обратную связь с запрашивающим инженером о состоянии этих тестов.
Если проверки и тестирование базовых показателей проходят хорошо, процесс интеграции создает и этапирует ресурсы, которые будут развертывать обновленное программное обеспечение. Эти ресурсы включают скомпилированный код и образы контейнеров.
Непрерывная интеграция может помочь вам быстрее предоставлять высококачественное программное обеспечение, выполнив следующие действия:
- Выполните автоматические тесты кода, чтобы обеспечить раннее обнаружение критических изменений.
- Выполнение анализа кода для проверки кода на соответствие стандартам, показателям качества и конфигурации.
- Выполните проверки соответствия требованиям и безопасности, чтобы убедиться, что у программного обеспечения нет известных уязвимостей.
- Выполните приемочные или функциональные тесты, чтобы убедиться, что программное обеспечение работает должным образом.
- Оставить быстрый отзыв об обнаруженных проблемах.
- Создание ресурсов или пакетов для развертывания (если применимо) с обновленным кодом.
Конвейеры непрерывной интеграции
С целью реализации непрерывной интеграции используйте программные решения для интеграции, автоматизации процесса и управления им. Обычно используется конвейер непрерывной интеграции.
Конвейер непрерывной интеграции включает в себя часть программного обеспечения (часто размещенного в облаке), которая обеспечивает следующее:
- Платформа для запуска автоматических тестов.
- Проверка соответствия требованиям.
- Отчеты.
- Все остальные компоненты, составляющие процесс непрерывной интеграции.
В большинстве случаев программное обеспечение конвейера присоединяется к системе управления версиями таким образом, что при создании запросов на вытягивание или слиянии программного обеспечения в определенную ветвь запускается конвейер непрерывной интеграции. Интеграция системы управления версиями также предоставляет возможность предоставлять отзывы ci непосредственно о запросах на вытягивание.
Многие решения, такие как Azure Pipelines или GitHub Actions, предоставляют возможности конвейеров непрерывной интеграции.
Интеграция системы управления версиями
Интеграция конвейера непрерывной интеграции с системой управления версиями является ключом к быстрому самостоятельному внесению кода.
Конвейер CI выполняется по только что созданному запросу на вытягивание. Конвейер включает все тесты, оценки безопасности и другие проверки. Результаты теста CI отображаются непосредственно в запросе на вытягивание, что позволяет получать отзывы о качестве практически в режиме реального времени.
Другой распространенной практикой является создание небольших отчетов или индикаторов событий, которые можно представить в системе управления версиями, чтобы сделать текущее состояние сборки видимым.
На следующем рисунке показана интеграция между GitHub и конвейером Azure DevOps. В этом примере создание запроса на вытягивание запускает конвейер Azure DevOps. Состояние конвейера отображается в запросе на вытягивание.
Тестовая интеграция
Ключевым элементом непрерывной интеграции является непрерывное создание и тестирование кода по мере того, как разработчики вносят свой вклад в код. Тестирование запросов на вытягивание по мере их создания позволяет быстро оставить отзыв о том, что фиксация не внесла критических изменений. Преимущество заключается в том, что тесты в конвейере непрерывной интеграции могут быть теми же тестами, которые выполняются во время разработки на основе тестирования.
В следующем фрагменте кода приведен шаг тестирования из конвейера Azure DevOps. Этот шаг состоит из двух задач:
- Первая задача использует популярную платформу тестирования Python для выполнения тестов CI. Эти тесты располагаются в системе управления версиями вместе с кодом Python. Результаты теста пойдут в файл с именемtest-results.xml.
- Вторая задача использует результаты теста и публикует их в конвейере Azure DevOps в виде интегрированного отчета.
- script: |
pip3 install pytest
pytest azure-vote/azure-vote/tests/ --junitxml=junit/test-results.xml
continueOnError: true
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '**/test-results.xml'
failTaskOnFailedTests: true
testRunTitle: 'Python $(python.version)'
На следующем рисунке показаны результаты тестирования, отображаемые на портале Azure DevOps.
Тесты со сбоями
Неудачные тесты должны временно заблокировать развертывание и привести к более глубокому анализу того, что произошло. Неудачные тесты также должны привести либо к уточнению тестов, либо к улучшению изменения, которое привело к сбою тестов.
Индикаторы результатов CI
Многие разработчики показывают высокое качество кода, отображая индикатор состояния в репозитории. На следующем рисунке показан значок Azure Pipelines, отображаемый в файле сведений для проекта с открытым кодом в GitHub.
Упрощение azure
Azure DevOps — это набор служб, которые помогают создать совместную, эффективную и согласованную методику разработки.
Azure Pipelines предоставляет службы сборки и выпуска для поддержки непрерывной интеграции и непрерывной поставки (CI/CD) приложений.
GitHub for Actions для Azure обеспечивает автоматизацию процессов CI/CD. Он интегрируется непосредственно с Azure для упрощения развертываний. Вы можете создавать рабочие процессы, которые создают и тестируют каждый запрос на вытягивание в репозитории или развертывают объединенные запросы на вытягивание в рабочей среде.
Связанные ссылки
Узнайте, как создать конвейер непрерывной интеграции с помощью GitHub или Azure DevOps:
- Create your first pipeline (Создание первого конвейера)
- Использование начальных рабочих процессов
Узнайте, как отображать индикаторы событий в репозиториях:
- Добавление индикатора состояния Azure Pipelines в репозиторий
- Добавление индикатора состояния рабочего процесса GitHub в репозиторий