Что такое конвейер CI/CD?
Что такое конвейер CI/CD?
Компании вынуждены справляться с обновлениями программного обеспечения, исправлениями ошибок и новыми инновациями на все более конкурентном рынке приложений. Команды по разработке программного обеспечения и эксплуатации должны работать слаженно, чтобы учитывать отзывы пользователей, устранять проблемы и развертывать обновления без ущерба для бизнес-операций. Обычные циклы разработки программного обеспечения, особенно те, которые основаны на последовательной каскадной модели, с трудом отстают от темпов выпуска современного программного обеспечения. Поскольку жизненный цикл разработки программного обеспечения становится все более компактным, команды разработчиков обращаются к CI/CD для эффективного создания точного, высококачественного и безопасного кода.
CI/CD означает непрерывную интеграцию и непрерывную доставку. В некоторых случаях CD также может означать непрерывное развертывание.
- Непрерывная интеграция позволяет нескольким разработчикам одновременно работать над своим кодом и объединять его без ущерба для стабильности кода.
- Непрерывная поставка – это автоматизированный рабочий процесс тестирования, проверки и подготовки программного обеспечения к выпуску после одобрения человеком.
- Непрерывное развертывание аналогично непрерывной доставке, за исключением того, что утверждение автоматизируется по заранее настроенным правилам.
В совокупности CI/CD можно реализовать как конвейер, автоматизирующий все процессы, которые ранее выполнялись вручную. Чтобы лучше понять, как работает конвейер CI/CD, обратитесь к диаграмме ниже.
Каждый этап конвейера CI/CD включает в себя определенные действия в процессе разработки программного обеспечения. Они включают автоматические тесты для проверки качества кода, уязвимостей и других технических проблем перед тем, как приступить к дальнейшим сборкам программного обеспечения. Таким образом, команды разработчиков могут раньше выявлять и устранять проблемы с кодом, что значительно экономит время, ресурсы и затраты компаний.
Настройка конвейера CI/CD выглядит просто. Однако компании часто сталкиваются с проблемами при внедрении рабочего процесса CI/CD, особенно при локальной настройке. Например, компании сталкиваются с инфраструктурными проблемами, когда им необходимо управлять большим количеством приложений, инструментов и членов команды. Оставшись без внимания, разработчики тратят больше времени на исправление конвейера, а не на работу над самим кодом.
Перенос рабочих процессов CI/CD в облако AWS позволяет командам масштабировать современные рабочие нагрузки по разработке программного обеспечения, эффективнее сообщать об изменениях и эффективнее управлять ресурсами. Например, компания Duolingo перенесла свой конвейер CI/CD на AWS EC2 Mac и внедрила передовые стратегии автомасштабирования. В результате они сократили время сборки с 50 до 16 минут.
Как создать CI/CD конвейер?
С помощью автоматизированных и управляемых сервисов AWS делает реализацию CI/CD более простой, автоматизированной и безопасной. Вместо ручной настройки инструментов, серверов и ресурсов разработки, команда может сосредоточиться на более ценных задачах, таких как обработка запросов пользователей и стратегическое планирование релизов.
Для начала можно применить AWS CloudFormation для автоматического разворачивания облачных ресурсов, нужных DevOps командам для CI/CD. Вы начинаете с описания необходимых ресурсов в шаблоне либо используете готовые шаблоны. CloudFormation затем выделяет все нужные ресурсы, формируя базовую инфраструктуру для CI/CD. Далее вы можете реализовать этапы CI/CD конвейера в AWS облаке следующим образом.
Источник
Этап источника отслеживает изменения версий, которые вносят разработчики. Разработчики копируют версию исходного кода из общего репозитория на локальный компьютер. После этого они редактируют, компилируют, тестируют и сливают измененный код обратно в репозиторий.
Вот как ваша команда может управлять кодом с помощью AWS инструментов.
Шаг 1. Создание кода с помощью IDE
Разработчик может написать новый код или изменить существующий, используя AWS Cloud9, облачную IDE, поддерживающую популярные языки. С Cloud9 можно писать, запускать и отлаживать код в браузере при наличии доступа к Интернету. Альтернативно, если вы используете стороннюю IDE, можно установить Пакет средств разработки ПО (SDK) для написания кода на языках вроде Java, Python или JavaScript. Пакеты SDK позволяют получать доступ к ресурсам и библиотекам AWS через интерфейс прикладного программирования (API) из предпочитаемой среды программирования.
Шаг 2. Зафиксируйте код в центральном репозитории
Разработчики используют сторонние инструменты, такие как GitHub, для создания частных репозиториев кода, управления запросами на перенос и объединения изменений. Она действует как система управления версиями, позволяющая отслеживать изменения, внесенные другими разработчиками, и при необходимости возвращаться к предыдущему функциональному исходному коду.
Сборка и тестирование
На этапе сборки код, хранящийся в центральном репозитории, отправляется на сервер сборки. Затем сервер сборки превращает исходный код и зависимости в программный файл, называемый артефактом, который разработчики могут запускать на последующих этапах. Например, если вы создаете программу на Java, вы получите файл JAR или WAR. На этом этапе можно выполнить несколько предварительных тестов, включая модульный и статический анализ кода.
- Модульные тесты гарантируют, что отдельные программные функции дают правильные результаты.
- Статический анализ кода проверяет исходный код на предмет выявления ошибок, уязвимостей безопасности и соблюдения стандартов кодирования.
Если код не проходит никаких тестов, разработчики возвращают его в предыдущее состояние и устраняют проблемы.
Обычно командам разработчиков программного обеспечения необходимо настроить собственные серверы сборки для упаковки своих приложений. Кроме того, им придется вручную писать тестовые сценарии, проверять их и отслеживать результаты с помощью повторных итераций. Теперь они могут использовать AWS CodeBuild для ускорения рабочего процесса сборки CI/CD. Он позволяет автоматически собирать и тестировать код при внесении изменений. Сервис находит код в нужном репозитории и запускает заданный скрипт сборки.
AWS CodeBuild масштабирует вычислительные мощности автоматически под нагрузку сборки. Так вам не нужно ждать окончания одной сборки, чтобы запустить следующую. Команды разработчиков могут находить ошибки на ранних стадиях и решать их до того, как они усложнятся.
Например, при разработке проекта на Node.js можно подключить Jasmine или Jest к AWS CodeBuild. Эти фреймворки позволяют удобно писать тесты, указывать ожидаемые результаты и проверять их во время сборки.
Этап тестирования идет сразу после сборки. Он нужен для более глубокого тестирования приложения, чтобы повысить качество, производительность, безопасность и другие характеристики. Благодаря конвейеру CI/CD тестирование автоматизировано и охватывает несколько областей.
- Интеграционные тесты проверяют, как взаимодействуют между собой все сервисы и сторонние компоненты.
- Функциональные тесты оценивают приложение с точки зрения конечного пользователя.
- Тесты безопасности выявляют потенциальные угрозы и уязвимости
- Тесты производительности проверяют, остается ли приложение стабильным при резких скачках нагрузки или в нестандартных условиях.
Опять же, приложение должно пройти все указанные тесты, прежде чем его можно будет перейти к следующему этапу.
Промежуточная среда
Поэтапное тестирование позволяет выполнить окончательную проверку приложения перед его выпуском конечным пользователям. На данном этапе команды разработчиков программного обеспечения развертывают приложение в среде, имитирующей реальные реализации. Часто они используют фиктивные данные и привлекают группу конечных пользователей для тестирования приложения с целью выявления незамеченных проблем до релиза.
Например, вы обновили приложение и хотите проверить, как оно взаимодействует с пользователями. Его развертывание в промежуточной среде помогает оценить производительность программного обеспечения без прерывания бизнес-операций. После выполнения всех условий тестирования команды разработчиков программного обеспечения развертывают приложение в рабочей среде, что делает его доступным для конечных пользователей.
Развертывание в разных средах может оказаться непростой задачей, особенно если команды делают это вручную. AWS CodeDeploy позволяет упростить развертывание приложений. Она автоматизирует развертывание приложений в различных средах. Можно просматривать действия по развертыванию, отслеживать изменения и при необходимости возвращаться к предыдущей версии. Это также устраняет разрыв между постановкой и производством. Например, можно использовать точные инструкции по развертыванию, используемые при подготовке производственной версии.
Производство
Производство – это живая среда, в которой реальные пользователи получают доступ к вашему приложению. После модификации, тестирования и проверки изменений команды разработчиков программного обеспечения выпускают обновленное приложение в рабочей среде. Хотя этот шаг положил конец конвейеру CI/CD, усилия по обеспечению соответствия приложения требованиям производительности, безопасности и бизнеса продолжаются. Поэтому вам необходимо постоянно контролировать работу приложения в рабочей среде.
Amazon CloudWatch – это сервис, который предоставляет командам разработчиков и эксплуатации возможность отслеживать приложения, которые они развертывают в AWS, локальных или других облачных средах. Оно автоматически собирает и визуализирует эксплуатационные данные, что позволяет лучше понять, как ваше приложение работает в реальных условиях. Кроме того, вы можете настроить оповещения и получать уведомления о событиях, требующих немедленного внимания со стороны ваших команд.
Как автоматизировать конвейер CI/CD?
Интеграция CI/CD инструментов от разных поставщиков может быть сложной задачей – особенно если она требует значительных ручных настроек. С AWS CodePipeline можно автоматизировать, масштабировать и ускорить релиз кода, сохраняя при этом гибкость.
AWS CodePipeline дает возможность выстраивать CI/CD процессы через графический интерфейс. Вы легко сможете добавить в свой конвейер сервисы AWS или подключить уже используемые инструменты и ресурсы. Например, если вы планируете использовать Jenkins как сервер сборки – его можно интегрировать с AWS CodePipeline.
Ниже мы кратко описали этапы для такой настройки.
- Установите Jenkins и плагин AWS CodePipeline для Jenkins.
- Затем настройте разрешения доступа через AWS Identity and Access Management (IAM) для Jenkins. Это позволит Jenkins использовать авторизованные данные для взаимодействия с AWS CodePipeline.
- Зайдите в консоль AWS CodePipeline и создайте собственный pipeline.
- Подключите его к репозиторию исходного кода, например GitHub.
- Затем добавьте этап сборки и укажите Jenkins в качестве build сервера.
- Добавьте нужные этапы тестирования, включая обязательные действия и триггеры сборки.
- После этого подключите финальный этап деплоя к AWS CodeDeploy или другому сервису развертывания.
Как AWS может удовлетворить ваши задачи в CI/CD конвейере?
Конвейер CI/CD дает компаниям возможность быстрее разрабатывать, тестировать и выпускать обновления приложений – без ущерба для качества и безопасности ПО. Команды разработки ПО редактируют код, объединяют изменения, запускают автотесты, настраивают развертывание – и многое другое с помощью CI/CD инструментов. Однако некоторые команды сталкиваются с проблемами масштабирования процессов CI/CD из за ограничений инфраструктуры, ресурсов и методологий.
AWS предлагает комплекс облачных решений для создания, улучшения и масштабирования CI/CD конвейера.
- AWS CloudFormation подготавливает ресурсы, на которых выполняются CI/CD инструменты.
- AWS Cloud9 позволяет разработчикам писать, запускать и отлаживать код прямо в браузере.
- AWS CodeBuild позволяет компилировать, тестировать и упаковывать приложение без управления собственными серверами сборки.
- AWS CodeDeploy автоматизирует развертывание в любой среде, включая локальную среду и инстансы AWS.
- AWS CodePipeline позволяет смоделировать весь рабочий процесс CI/CD, от исходного кода до рабочей среды.
- AWS CloudWatch позволяет операционным группам непрерывно отслеживать, регистрировать и анализировать развернутые приложения.
Если вам нужна дополнительная помощь в настройке конвейера CI/CD, обратитесь в Amazon Professional Services.