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

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

Непрерывная интеграция (CI) — это практика разработки программного обеспечения, при которой разработчики регулярно объединяют свои изменения кода в центральный репозиторий. Затем каждое изменение автоматически создается и тестируется, гарантируя, что кодовая база всегда остается в рабочем состоянии.

Преимущества CI многочисленны. Часто внося изменения в код, разработчики могут выявлять проблемы на ранней стадии, когда их легче и дешевле исправить. Это может помочь предотвратить «интеграционный ад», который может возникнуть при одновременном объединении большого количества изменений. CI также помогает командам быстрее выпускать программное обеспечение, поскольку позволяет им выявлять и устранять проблемы сразу же после их возникновения, а не ждать формального процесса сборки и выпуска.

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

CI обычно опирается на автоматизированные инструменты сборки и тестирования, чтобы убедиться, что изменения кода правильно интегрированы и протестированы. Когда разработчик вносит изменения в кодовую базу, он обычно фиксирует свои изменения в системе контроля версий (например, Git) и отправляет их в центральный репозиторий.

Это запустит процесс автоматической сборки, который скомпилирует код, запустит все необходимые тесты и сообщит о результатах. Если сборка и тесты пройдены успешно, изменения будут автоматически объединены с основной кодовой базой. Если возникнут проблемы, разработчик будет уведомлен об этом, и они смогут устранить проблемы до того, как код будет объединен.

Что такое непрерывная доставка?

Непрерывная доставка (CD) — это практика разработки программного обеспечения, при которой изменения кода автоматически создаются, тестируются и развертываются в рабочей среде. CD продвигает принципы непрерывной интеграции на шаг вперед, автоматизируя весь процесс выпуска, от фиксации кода до развертывания.

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

Как работает непрерывная доставка?

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

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

Примеры CI/CD в действии

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

  • Facebook: Facebook имеет большую и сложную кодовую базу

Чтобы настроить CI/CD с помощью Git и AWS, вам необходимо выполнить следующие действия:

  1. Настройте репозиторий Git для своего кода. Это может быть размещено в сервисе, таком как GitHub или GitLab, или вы можете использовать локальное решение, такое как GitLab.
  2. Настройте инструмент автоматизации сборки, например Jenkins или Travis CI. Этот инструмент будет отвечать за создание и тестирование вашего кода всякий раз, когда вы вносите изменения в репозиторий Git.
  3. Настройте промежуточную среду в AWS. Это может быть экземпляр EC2 или контейнерный сервис, такой как ECS или EKS. Промежуточная среда должна быть настроена так же, как и ваша производственная среда, чтобы вы могли протестировать свой код в реалистичной среде перед его развертыванием в рабочей среде.
  4. Настройте процесс развертывания в средстве автоматизации сборки. Этот процесс должен развертывать ваш код в промежуточной среде всякий раз, когда сборка и тесты проходят.
  5. Настройте ручное тестирование в тестовой среде. Это можно сделать с помощью таких инструментов, как Selenium, или вручную командой контроля качества.
  6. Настройте производственную среду в AWS. Это должно быть настроено так же, как и ваша промежуточная среда.
  7. Настройте процесс в своем инструменте автоматизации сборки для развертывания кода в рабочей среде, когда он проходит ручное тестирование.

Вот пример конвейера CI/CD с Git, Jenkins и AWS:

В этом примере разработчик фиксирует изменения кода в репозитории Git, что запускает Jenkins для сборки и тестирования кода. Если тесты пройдены, код развертывается в промежуточной среде в AWS, где группа контроля качества вручную тестирует его. Если код проходит ручное тестирование, он развертывается в производственной среде в AWS.

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

Вот пример сценария сборки, написанного в PowerShell:

А вот пример тестового скрипта, написанного на C#:

Вот пример скрипта сборки, написанного на Bash:

Это всего лишь несколько примеров типов сценариев, которые вы можете использовать в конвейере CI/CD с Git и AWS. Конкретные сценарии, которые вы используете, будут зависеть от вашего приложения и инструментов, которые вы используете.