с помощью AWS CodePipeline
Изучив это руководство, вы научитесь создавать конвейер автоматизированного выпуска программного обеспечения с развертыванием рабочего образца приложения. Вы создадите конвейер с помощью AWS CodePipeline — сервиса для построения, тестирования и развертывания кода после любых изменений. В качестве исходного расположения кода образца приложения вы будете использовать аккаунт GitHub, корзину Amazon Simple Storage Service (S3) или репозиторий AWS CodeCommit. Кроме того, в качестве целевого объекта развертывания образца приложения будет использоваться AWS Elastic Beanstalk. Готовый конвейер сможет обнаруживать изменения, внесенные в исходный репозиторий, где хранится образец приложения, а затем автоматически обновлять рабочий образец приложения.
Непрерывное развертывание позволяет развертывать версии в рабочей среде автоматически, без явного подтверждения разработчика, что автоматизирует весь процесс выпуска ПО.
Все действия, описанные в данном учебном пособии, доступны на уровне бесплатного пользования.
Управление ресурсами AWS
Вход в КонсольКонвейеру непрерывного развертывания потребуется целевая среда с виртуальными серверами или инстансы Amazon EC2, где будет развернут образец кода. Вы подготовите эту среду до создания конвейера.
а) Чтобы упростить процесс создания и настройки инстансов EC2 в рамках работы с этим руководством, вы создадите образец среды с помощью AWS Elastic Beanstalk. Elastic Beanstalk позволяет легко размещать веб-приложения без необходимости запускать, настраивать и обслуживать виртуальные серверы самостоятельно. Сервис автоматически подготавливает и обслуживает инфраструктуру (например, виртуальные серверы, балансировщики нагрузки и т. д.) и предоставляет стек приложений (например, ОС, язык и платформу, веб-сервер, сервер приложений и т. д.).
б) Выберите PHP из раскрывающегося меню и нажмите кнопку Launch Now (Запустить).
Примечание. Если вы уже создали приложение Elastic Beanstalk, нажмите Create New Application (Создать новое приложение) в правом верхнем углу. Назовите свое приложение и создайте новую среду веб-сервера. Выберите PHP в качестве платформы, а Single Instance (Один инстанс) — в качестве типа среды. Если вы планируете осуществлять удаленный вход в свои инстансы, выберите пару ключей. В противном случае оставьте значения по умолчанию для остальных параметров и создайте среду для своего конвейера непрерывного развертывания.
в) Elastic Beanstalk начнет создавать образец среды для развертывания вашего приложения. Сервис создаст инстанс Amazon EC2, группу безопасности, группу Auto Scaling, корзину Amazon S3, тревоги Amazon CloudWatch и доменное имя для вашего приложения.
Примечание. Это займет несколько минут.
В этом шаге извлекается экземпляр кода образца приложения и выбирается источник для размещения кода. Конвейер принимает код из исходного расположения и выполняет с ним различные действия.
В качестве исходного расположения можно использовать один из трех вариантов: репозиторий GitHub, корзину Amazon S3 или репозиторий AWS CodeCommit. Выберите предпочтительный вариант и выполните действия ниже:
В этом шаге создается и настраивается простой конвейер с двумя действиями: исходное расположение и развертывание. В CodePipeline необходимо указать расположения исходного репозитория и среды развертывания.
а) Щелкните здесь, чтобы открыть консоль AWS CodePipeline.
- На странице приветствия нажмите Create pipeline (Создать конвейер).
- Если вы используете AWS CodePipeline впервые, вместо приветствия отобразится страница с вводными сведениями. Нажмите Get Started (Начать работу).
б) На странице Step 1: Name (Шаг 1. Имя):
- Pipeline name (Имя конвейера). Введите имя конвейера enter the name for your pipeline — DemoPipeline.
- Нажмите кнопку Next step (Следующий шаг).
Примечание. Изменить имя конвейера после создания конвейера невозможно.
в) На странице Step 2: Source (Шаг 2. Исходное расположение) выберите ранее выбранное вами исходное расположение и выполните действия ниже:
г) Для создания настоящего конвейера непрерывного развертывания требуется этап сборки, на котором код компилируется и проходит модульное тестирование. CodePipeline позволяет подключить выбранного вами поставщика сборок в конвейер. Однако в этом руководстве этап сборки не рассматривается.
- На странице Step 3: Build (Шаг 3. Сборка) выберите No Build (Без сборки).
- Щелкните Next step (Следующий шаг).
д) На странице Step 4: Beta (Шаг 4. Бета-версия):
- Deployment Provider (Поставщик развертывания): нажмите AWS Elastic Beanstalk.
- Application name (Имя приложения): нажмите My First Elastic Beanstalk Application (Мое первое приложение Elastic Beanstalk).
- Environment name (Имя среды): нажмите Default-Environment.
- Нажмите кнопку Next step (Следующий шаг).
Примечание. Имя Beta (Бета) — это просто имя, по умолчанию присваиваемое этому этапу конвейера, точно так же как Source (Исходное расположение) — это имя первого этапа конвейера
е) На странице Step 5: Service Role (Шаг 5. Роль службы):
- Роль службы: щелкните Create role (Создать роль).
- Вы будете перенаправлены на страницу консоли IAM, где описывается роль AWS-CodePipeline-Service, которая будет создана для вас. Нажмите Allow (Разрешить)
- После создания роли вы вернетесь на страницу Step 5: Service Role (Шаг 5. Роль службы), где в поле Role Name (Имя роли) отображается AWS-CodePipeline-Service Нажмите кнопку Next step (Следующий шаг).
Примечание. Создание роли службы необходимо только при первом создании конвейера в AWS CodePipeline. Если роль службы уже создана, вы сможете выбрать ее из раскрывающегося списка ролей. Поскольку в раскрывающемся списке будут отображаться все роли службы IAM, связанные с вашим аккаунтом, если вы выбираете имя, отличное от имени по умолчанию, помните, что оно должно легко распознаваться как имя роли службы для AWS CodePipeline.
На этом этапе запускается ваш конвейер. После создания конвейер начнет работать автоматически. Сначала он обнаружит код образца приложения в вашем исходном расположении, свяжет файлы и переместит их на второй определенный вами этап. На этом этапе конвейер передает код в Elastic Beanstalk, где находится инстанс EC2, в котором будет размещен ваш код. Elastic Beanstalk обрабатывает развертывание кода в инстансе EC2.
а) На странице Step 6: Review (Шаг 6. Проверка) проверьте информацию и нажмите кнопку Create pipeline (Создать конвейер).
б) После создания конвейера отобразится страница статуса конвейера, он начнет работать автоматически. Вы можете отслеживать ход выполнения и сообщения об успешном и неудачном выполнении операций по мере того, как конвейер выполняет каждое действие.
Чтобы убедиться, что конвейер выполнил успешно все операции, отслеживайте прогресс конвейера на каждом этапе. Статус каждой страницы изменится с No executions yet (Нет выполненных действий) на In Progress (Выполняется), а затем — на Succeeded (Успешно) или Failed (Сбой). Конвейер должен завершить первый цикл операций за несколько минут.
в) В области состояния этапа «Бета» нажмите AWS Elastic Beanstalk.
г) Откроется консоль AWS Elastic Beanstalk с подробными сведениями о развертывании.
- Нажмите созданную ранее среду Default-Environment.
д) Нажмите URL-адрес, отображаемый в правой верхней части страницы, чтобы просмотреть развернутый вами образец веб-сайта.
В этом шаге проверяется образец кода и подтверждаются изменения в репозитории. CodePipeline обнаруживает обновленный образец кода и автоматически инициирует его развертывание в инстанс EC2 через Elastic Beanstalk.
Обратите внимание, что развернутый вами образец веб-страницы относится к AWS CodeDeploy — сервису, автоматизирующему развертывание кода. В CodePipeline сервис CodeDeploy является альтернативой использованию Elastic Beanstalk для развертывания. Давайте обновим образец кода, чтобы в нем правильно отражался тот факт, что вы развернули образец с помощью Elastic Beanstalk.
г) Вернитесь в свой конвейер на консоли CodePipeline. Через несколько минут вы увидите, что исходное расположение поменяло цвет и стало синим, что означает, что конвейер обнаружил изменения, которые вы внесли в исходный репозиторий. После этого конвейер автоматически переместит обновленный код в Elastic Beanstalk.
- После того как статус конвейера сменится на Succeeded (Успешно), в области статуса на этапе «Бета» щелкните AWS Elastic Beanstalk.
д) Откроется консоль AWS Elastic Beanstalk с подробными сведениями о развертывании. Выберите созданную ранее среду Default-Environment.
е) Нажмите URL-адрес, отображаемый в правой верхней части страницы, чтобы просмотреть пример веб-сайта еще раз. Ваш текст был автоматически обновлен конвейером непрерывного развертывания!
Чтобы избежать необходимости вносить изменения в дальнейшем, необходимо удалить все ресурсы, запущенные при работе с этим руководством, что включает конвейер, приложение Elastic Beanstalk и исходную систему, настроенную для размещения кода.
а) В первую очередь необходимо удалить конвейер.
- В представлении конвейера нажмите Edit (Изменить).
- Нажмите Delete (Удалить).
- Введите название конвейера и нажмите кнопку Delete (Удалить).
б) Во-вторых, необходимо удалить приложение Elastic Beanstalk.
- Перейдите на консоль Elastic Beanstalk.
- Нажмите Actions (Действия).
- Затем нажмите Terminate Environment (Завершить работу среды).
Вы успешно создали автоматизированный конвейер выпуска программного обеспечения с помощью AWS CodePipeline! С помощью CodePipeline вы создали конвейер, который использует GitHub, Amazon S3 или AWS CodeCommit в качестве исходного расположения для кода приложения, а затем развертывает код в инстансе Amazon EC2, управление которым осуществляет AWS Elastic Beanstalk. Ваш конвейер будет автоматически развертывать код всякий раз, когда в код вносятся изменения. Теперь вы на шаг ближе к внедрению непрерывного освоения в свою практику!
Вы научились создавать простой конвейер с помощью AWS CodePipeline. Получить дополнительную информацию можно н следующих ресурсах.
- Создайте более сложный четырехэтапный конвейер, выполнив инструкции из этого руководства. Этот конвейер использует репозиторий GitHub в качестве исходной системы, сервер сборки Jenkins – для разработки и тестирования проекта, а приложение AWS CodeDeploy – для развертывания созданного кода на промежуточном сервере.
- Быстро создать четырехэтапный конвейер с сервером сборки Jenkins поможет наш стартовый комплект для создания конвейеров.
- Подробнее о непрерывной доставке