По мере усложнения программного обеспечения простые на первый взгляд изменения могут привести к непредвиденным побочным эффектам. Сложность может возрастать, когда над одним и тем же программным обеспечением работают несколько разработчиков из разных команд. Непрерывная интеграция/непрерывное развертывание (CI/CD) - это подход, который решает эту проблему. Вот краткий обзор процесса CI/CD (пример см. в Примеч. 19.4):

 

Непрерывная интеграция (CI) решает проблему координации и проверки изменений программного обеспечения в процессе разработки автоматизированным способом для обеспечения высокого качества. Для реализации CI существует множество инструментов.

 

В одной глобальной фармацевтической компании agile-подразделение, разрабатывающее новую функциональность API, выбрало CircleCI в качестве инструмента CI. Жизненный цикл кода описан ниже:

 

Инженеры, работающие по принципу agile pod, вносили изменения в код, которые затем сохранялись в GitHub (система контроля версий).

CircleCI обнаруживает изменения кода, внесенные в систему контроля версий.

CircleCI проверяет соответствие кода стандартам, запуская Pylint (инструмент для линтинга).

CircleCI проверяет правильность поведения кода, запуская связанные с ним тесты - в данном случае с помощью Pytest.

CircleCI проверяет соответствие кода стандартам качества, выполняя метрики кода - в данном случае с помощью SonarQube.

Документация к коду генерируется автоматически с помощью инструмента - в данном случае с помощью Sphinx (инструмент с открытым исходным кодом, который извлекает документацию из кода и генерирует человекочитаемую документацию для веба).

CircleCI упаковывает пройденный код в модульный строительный блок, который хранится в репозитории пакетов - в данном случае пакет хранится в контейнере (Docker) и хранится в Amazon ECR (хранилище образов Docker, управляемое Amazon). Контейнеры позволяют запускать приложения в любой среде, однако использовать их следует с умом.

 

Конвейер кода Python - непрерывная интеграция и развертывание - пример

 

 

КОД

Python

 

 

 

GitHub

1

2      CircleCI      Обнаружение изменений в коде

 

 

Pylint      Проверка соответствия кода стандартам

 

Pytest      Проверьте поведение кода, запустив тест

 

SonarQube      Проверка качества кода

 

Sphinx      Автогенерация документации

Docker      Код упаковывается и хранится в репозитории

Amazon ECR

Selenium      Запуск интеграционных тестов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Инженеры вносят изменения в код

 

 

 

Контроль исходных текстов/сохранение кода

 

 

 

НЕПРЕРЫВНАЯ ИНТЕГРАЦИЯ

      

 

 

 

НЕПРЕРЫВНОЕ РАЗВЁРТЫВАНИЕ

 

 

 

ПРИЛОЖЕНИЕ 19.4

3      Argo      Обнаружение изменений в коде

 

 

Checkmarx      Проверка на наличие уязвимостей

Argo      Скопируйте образ Docker на производственную платформу Kubernetes

Kurbenetes      Представьте в виде API для тестирования поведения кода

 

Selenium      Убедитесь, что API работает

Kurbenetes        Активируйте API для пользователей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Затем CircleCI проводит интеграционные тесты, проверяя, работает ли новый модульный блок при интеграции со всем остальным программным обеспечением и любыми другими изменениями, внесенными другими членами команды - в данном случае с помощью Selenium (инструмента автоматизации веб-программ с открытым исходным кодом для автоматического написания тестов).

 

Поскольку весь этот процесс автоматизирован и выполняется часто (по мере изменения кода), он дает разработчикам быструю обратную связь о качестве кода и уверенность в том, что выпускается высококачественное программное обеспечение.

 

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

 

Фармацевтическая компания, о которой шла речь выше, выбрала инструмент Argo CD для развертывания в производстве (кластер Kubernetes). Процесс компании включал в себя следующие шаги (см. рисунок 19.4. Обратите внимание, что следующее перечисление отличается от приведенного на рисунке для наглядности).

 

Argo CD обнаруживает изменения в GitHub (контроль версий), сделанные с помощью непрерывной интеграции (указывающие на то, что нужно развернуть что-то новое).

Argo CD проверяет пакет на наличие уязвимостей с помощью Checkmarx, который используется для обнаружения векторов атак безопасности в пакете или написанном коде. Это дополнительный шаг, гарантирующий, что то, что ставится в производство, безопасно для работы в производстве.

Затем Argo CD копирует с Amazon ECR образ Docker на производственную платформу Kubernetes. Платформа Kubernetes упрощает управление контейнерами и делает приложения более переносимыми.

Затем Argo CD гарантирует, что у этого нового контейнера есть частный API, который можно использовать для проверки правильности поведения пакета.

Argo CD запрашивает Selenium (инструмент тестирования) для проверки правильности поведения API.

Перейти на страницу:

Похожие книги