Непрерывные интеграция и развертывание

Завершено

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

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

Непрерывная интеграция

До разработки средств CI/CD весь процесс разработки-развертывания и тестирования был вручную. Автоматизированные наборы тестов были доступны, но они должны выполняться вручную или в запланированное время экспертами.

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

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

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

Непрерывная доставка и развертывание

Непрерывная доставка выбирает место окончания ci и автоматизирует процесс доставки в выбранную среду инфраструктуры. Вы можете использовать непрерывную доставку для быстрого и устойчивого выпуска изменений. После использования непрерывной доставки вы решите заранее развернуть изменения ежедневно, еженедельно, ежемесячно или по другому расписанию, которое соответствует вашим бизнес-требованиям.

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

Конвейеры CI/CD

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

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

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

GitHub Actions

GitHub Actions поддерживает все связанные события GitHub и автоматизирует конвейер CI/CD в этом модуле. В GitHub Actions каждый шаг определяет действия в JavaScript или с помощью контейнера Docker. Действия легко создавать и формировать стандартные блоки шагов конвейера.

С помощью GitHub Actions можно легко интегрировать весь размещенный код GitHub с рабочим процессом автоматизации. Рабочий процесс обрабатывает несколько задач для интеграции кода в нескольких средах.

GitHub Actions — это популярный поставщик для конвейеров CI/CD из-за его модели с открытым исходным кодом. Так как рабочие процессы являются открытым кодом, они хранятся в репозиториях, доступных всем пользователям на платформе. Пользователи GitHub могут использовать действия друг друга или создавать собственные пользовательские действия без установки или настройки других действий.

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

Проверьте свои знания

1.

В чем различие между CI и CD?

2.

Что такое конвейер CI?