Этапы конвейера CI/CD

Движение DevOps захватило индустрию разработки программного обеспечения. Благодаря подходу DevOps организации могут быстрее и эффективнее реагировать на рыночные возможности за счет ускорения развертывания программного обеспечения, оптимизации операций и расширения сотрудничества между разработчиками программного обеспечения и операционными сотрудниками. В связи с этим непрерывная интеграция (CI) и непрерывная доставка (CD) считаются двумя ключевыми компонентами практики DevOps. Эти практики существуют уже некоторое время, но они стали еще более важными сейчас, когда мы живем в мире, где программное обеспечение действительно съедает весь мир.

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

Что такое непрерывная интеграция?

CI — это процесс автоматизации интеграции изменений кода в общую кодовую базу, направленный на поиск и устранение потенциальных проблем на ранней стадии разработки. Этого можно достичь путем автоматической интеграции кодовой базы после каждого коммита и запуска набора тестов. Результатом процесса является либо зеленый статус сборки, если код не содержит ошибок, либо красный статус, если в коде есть проблемы, вместе с информацией о том, что пошло не так. Интеграция обычно относится к процессу объединения частей кода (например, функций, модулей), которые были созданы отдельно разными людьми/командами и еще не полностью интегрированы. Это происходит, когда команда заканчивает работу над частью кода и переносит ее на следующий этап процесса, чтобы другие команды могли с ней работать.

Что такое Continuous Delivery?

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

Типичные этапы конвейера CI/CD

Источник:

На этапе исходного кода организация хранит свой исходный код в централизованном хранилище. Вы можете назвать ее системой контроля версий, например, GitHub, Bitbucket, GitLab или AWS CodeCommit. Этот этап и инструменты необходимы для того, чтобы помочь разработчикам координировать и отслеживать, кто что делает. Этот этап также способствует сотрудничеству, поскольку различные команды разработчиков проверяют свой код, делают обзоры кода и утверждают код для дальнейших действий. Автоматизация контроля версий может быть выполнена с помощью таких IDE, как visual code.

  • Анализ качества кода с помощью инструментов статического анализа На ранних этапах процесса автоматизированные инструменты (например, SonarQube, инструменты анализа VCS) могут проверить, соответствует ли код определенному набору правил (например, написан ли код на определенном языке, хорошо ли он документирован, покрыт ли тестами). Эти правила обычно определяются командой или менеджером рабочего процесса и помогают выявить потенциальные проблемы в коде на ранней стадии. Это важно, поскольку их исправление впоследствии означает изменение существующего кода, что может быть проблематично. Таким образом, использование инструментов статического анализа кода может сэкономить вам много времени и проблем в будущем.

Тестирование и сборка:

Тестирование и сборка — это этап после того, как разработчики размещают свой код в системе контроля версий. Когда разработчик размещает код в системе контроля версий организации, это запускает систему/инструмент непрерывной интеграции (например, Drone CI). Затем код проходит через тесты, предписанные разработчиком. И наконец, завершаются этапы компиляции и сборки.

  • Юнит-тестирование с помощью автоматизированных тестов: Автоматизированные тесты очень важны, поскольку они позволяют выявлять проблемы с функциональностью приложения сразу после их возникновения. Они обычно пишутся как часть автоматизированных процессов сборки и направлены на проверку правильности работы приложения. В зависимости от типа создаваемого программного обеспечения и используемого языка программирования, вы можете выбрать из широкого спектра инструментов автоматизированного тестирования.

  • Интеграционное тестирование и ручное QA: с помощью людей Интеграционное тестирование гарантирует, что компоненты или сервисы хорошо работают вместе. Оно выполняется тестировщиком, ответственным за тестирование функциональности, которую должна обеспечивать определенная функция. Интеграционное тестирование очень важно, поскольку оно позволяет тестировщику выявить проблемы с различными компонентами системы, которые тестировались отдельно командами разработчиков. При этом тестировщик выполняет функцию и проверяет, работает ли приложение так, как должно. Если есть проблемы с функциональностью, их должен устранить человек, ответственный за функцию.

Развертывание:

Наконец, на этапе развертывания код готов к развертыванию в QA, предпроизводственной или производственной среде в соответствии с планом организации. Развертывание программного обеспечения может быть автоматизировано с помощью непрерывного развертывания. На этом этапе организации предпочитают такие стратегии развертывания, как canary, rolling, blue/green и т. д.

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

CI/CD с Harness

С платформой доставки программного обеспечения Harness автоматизация конвейеров CI/CD может быть очень простой. Настройка CI/CD может быть сложной задачей для многих организаций, но Harness помогает решить самые сложные задачи CI/CD, такие как подключение новых разработчиков, новых технологий, проверка/продвижение ваших развертываний и действия в сценариях отказа. Вся необходимая оркестровка в виде тестов, утверждений и валидации может быть легко подключена в платформе Harness. Автоматизируйте сборку, тестирование и упаковку кода в артефакты с помощью Harness Continuous Integration и создавайте конвейеры развертывания за считанные минуты, безопасно развертывая артефакты в производство с помощью Harness Continuous Delivery.

Давайте рассмотрим, как работает CI/CD в Harness на примере приложения MERN Stack.

Непрерывная интеграция [CI]:

Фаза CI включает инициализацию, клонирование кода и выполнение заданных тестов.

Continuous Delivery [CD]:

CD включает в себя определение сервиса, настройку инфраструктуры, прохождение ресурсных ограничений и, наконец, развертывание кода с использованием предпочтительной стратегии. Воспользуйтесь примером приложения MERN Stack, созданным командой сообщества Harness, и попробуйте использовать модули CI и CD для непрерывной интеграции и развертывания приложения. Код приложения MERN Stack находится в репозитории harness-apps/MERN-Stack-Example, конфигурация Kubernetes — в репозитории harness-apps/MERN-Stack-Example-DevOps.

Оцените статью
devanswers.ru
Добавить комментарий