Изучив это руководство, вы научитесь создавать конвейер автоматизированного выпуска программного обеспечения с развертыванием рабочего образца приложения. Вы создадите конвейер с помощью 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. Выберите предпочтительный вариант и выполните действия ниже:

 

  • GitHub

    а) Если вы хотите использовать свой аккаунт GitHub:

    • Перейдите в репозиторий GitHub, который содержит образец кода, по адресу https://github.com/awslabs/aws-codepipeline-s3-aws-codedeploy_linux
    • Разветвите экземпляр этого репозитория в собственный аккаунт GitHub, нажав кнопку Fork (Ветвить) в правом верхнем углу.

    (Нажмите, чтобы увеличить.)

  • Amazon S3

    а) Если в качестве исходного расположения планируется использовать Amazon S3, необходимо извлечь образец кода из репозитория AWS GitHub, сохранить его на свой компьютер и отправить в корзину Amazon S3.

    (Нажмите, чтобы увеличить.)


    б) Сохраните исходные файлы на компьютер:

    • Щелкните файл aws-codepipeline-s3-aws-codedeploy_linux.zip
    • Нажмите View Raw (Просмотреть необработанный код).
    • Сохраните образец файла на локальном компьютере.

    (Нажмите, чтобы увеличить.)


    в) Щелкните здесь, чтобы открыть консоль Amazon S3 и создать корзину Amazon S3:

    • Нажмите Create Bucket (Создать корзину)
    • Bucket Name (Имя корзины). Введите уникальное имя корзины, например awscodepipeline-demobucket-variables.  Все имена корзин в Amazon S3 должны быть уникальными, поэтому используйте собственное имя, а не имя, которое приводится в примере.
    • Region (Регион). В раскрывающемся списке выберите регион для создания конвейера, например US Standard (США (стандартн.))
    • Нажмите кнопку Create (Создать).

    (Нажмите, чтобы увеличить.)


    г) На консоли отобразится только что созданная корзина, она пуста.

    • Нажмите Properties (Свойства).
    • Разверните узел Versioning (Управление версиями) и выберите Enable Versioning (Включить управление версиями). Если включено управление версиями, Amazon S3 сохраняет каждую версию каждого объекта в корзине.

    (Нажмите, чтобы увеличить.)


    д) Теперь следует отправить образец кода в корзину Amazon S3: 

    • Нажмите Upload (Отправить).
    • Выполните инструкции на экране, чтобы отправить ZIP-файл с образцом кода, который вы скачали с GitHub.

    (Нажмите, чтобы увеличить.)

  • AWS CodeCommit

    а) Если в качестве исходного расположения планируется использоватьAWS CodeCommit, необходимо извлечь образец кода из репозитория AWS GitHub, сохранить его на свой компьютер и отправить в репозиторий AWS CodeCommit.

    (Нажмите, чтобы увеличить.)


    б) Сохраните исходные файлы на компьютер:

    • Выберите файл aws-codepipeline-s3-aws-codedeploy_linux.zip.
    • Выберите View Raw (Просмотреть необработанный код).
    • Сохраните образец файла на локальном компьютере.

    (Нажмите, чтобы увеличить.)


    г) Щелкните здесь, чтобы открыть консоль AWS CodeCommit и выберите Get Started (Начало работы).

    (Нажмите, чтобы увеличить.)


    д) На странице Create new repository (Создать новый репозиторий):

    • Repository name (Имя репозитория). Введите PipelineRepo.
    • Выберите Create repository (Создать репозиторий).

    (Нажмите, чтобы увеличить.)


    е) Подключитесь к репозиторию и отправьте в него экземпляр образца файла.  См. инструкции в разделе Подключение к репозиторию 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. Исходное расположение) выберите ранее выбранное вами исходное расположение и выполните действия ниже:

  • GitHub

    Поставщик исходного кода: GitHub

    • В разделе Connect to GitHub (Подключение к GitHub) щелкните Connect to GitHub (Подключиться к GitHub).
    • Откроется новое окно браузера для подключения к GitHub. Если отобразится запрос на вход, укажите свои данные для доступа в GitHub. 
    • Потребуется разрешить приложению доступ к вашему аккаунту. Выберите Authorize application (Авторизовать приложение).

    (Нажмите, чтобы увеличить.)


    Укажите репозиторий и ветвь:

    • Repository (Репозиторий). В раскрывающемся списке выберите репозиторий GitHub, который требуется использовать в качестве исходного расположения для вашего конвейера. Щелкните разветвленный репозиторий в своем аккаунте GitHub с образцом кода под названием aws-codepipeline-s3-aws-codedeploy_linux
    • Branch (Ветвь). В раскрывающемся списке выберите ветвь, которую требуется использовать,​ — master.
    • Щелкните Next step (Следующий шаг).

    (Нажмите, чтобы увеличить.)

  • Amazon S3

    Source provider (Поставщик исходного кода): Amazon S3.

    • Amazon S3 location (Расположение Amazon S3). Введите имя созданной корзины Amazon S3 и образец файла, который вы копировали в эту корзину (aws-codepipeline-s3-aws-codedeploy_linux.zip). Например, если вы назвали корзину awscodepipeline-demobucket-variable, введите следующий текст: s3://awscodepipeline-demobucket-variable/aws-codepipeline-s3-aws-codedeploy_linux.zip.
    • Щелкните Next step (Следующий шаг).

    (Нажмите, чтобы увеличить.)

  • AWS CodeCommit

    Source provider (Поставщик исходного кода): AWS CodeCommit.

    • Repository name (Название репозитория). Выберите название репозитория AWS CodeCommit. 
    • Branch name (Имя ветви). Выберите название ветви, которая содержит образец файла.
    • Щелкните Next step (Следующий шаг).

    (Нажмите, чтобы увеличить.)


г) Для создания настоящего конвейера непрерывного развертывания требуется этап сборки, на котором код компилируется и проходит модульное тестирование. 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.

  • GitHub

    а) Перейдите к собственному экземпляру репозитория, который вы разветвили в GitHub.

    • Откройте файл index.html
    • Выберите значок Edit (Изменить).

    (Нажмите, чтобы увеличить.)


    б) Обновите веб-страницу, копировав и вставив следующий текст в строке 30. 

    Вы успешно создали конвейер, который извлекает это исходное приложение из GitHub, и с помощью AWS Elastic Beanstalk развернули его в инстансе Amazon EC2. Теперь вы на шаг ближе к внедрению непрерывного освоения в свою практику!

    (Нажмите, чтобы увеличить.)


    в) Подтвердите изменение в репозитории.

    (Нажмите, чтобы увеличить.)

  • Amazon S3

    а) На рабочем столе откройте скачанный ZIP-файл aws-codepipeline-s3-aws-codedeploy_linux.zip.


    б) Редактируйте код образца веб-приложения:

    • Извлеките index.html из ZIP-файла и откройте его с помощью текстового редактора по вашему выбору. 
    • Обновите текст заголовка после слова «Поздравляем!» следующим образом:

    «Вы успешно создали конвейер, который извлекает это исходное приложение из Amazon S3, и с помощью AWS Elastic Beanstalk развернули его в инстансе Amazon EC2. Теперь вы на шаг ближе к внедрению непрерывного освоения в свою практику!»

    • Копируйте обновленный файл index.html в архив aws-codepipeline-s3-aws-codedeploy_linux.zip и замените более старую версию index.html.

    (Нажмите, чтобы увеличить.)


    в) Повторно загрузите отредактированный файл в корзину Amazon S3:

    • Вернитесь в корзину S3, которую вы создали ранее. 
    • Отправьте обновленный файл aws-codepipeline-s3-aws-codedeploy_linux.zip в корзину. 

    Примечание. Поскольку при первоначальном создании корзины S3 вы включили управление версиями, S3 сохранит копию каждой версии ваших файлов.

    (Нажмите, чтобы увеличить.)

  • AWS CodeCommit

    а) Перейдите к загруженному ZIP-файлу с образцом кода aws-codepipeline-s3-aws-codedeploy_linux.zip.


    б) Редактируйте код образца веб-приложения:
     
    • Извлеките index.html из ZIP-файла и откройте его с помощью текстового редактора по вашему выбору. 
    • Затем обновите текст заголовка после слова «Поздравляем!» следующим образом:

    «Вы успешно создали конвейер, который извлекает это исходное приложение из AWS CodeCommit, и с помощью AWS Elastic Beanstalk развернули его в инстансе Amazon EC2. Теперь вы на шаг ближе к внедрению непрерывного освоения в свою практику!

    (Нажмите, чтобы увеличить.)


    в) Подтвердите и отправьте обновленный ZIP-файл в свой репозиторий CodeCommit.


г) Вернитесь в свой конвейер на консоли 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 (Завершить работу среды).

(Нажмите, чтобы увеличить.)

  • Amazon S3

    в) Если для прохождения этого руководства вы создали корзину S3, удалите ее.

    • Перейдите на консоль S3. 
    • Щелкните название корзины правой кнопкой мыши и выберите Delete Bucket (Удалить корзину)
    • Когда отобразится подтверждающее сообщение, введите название корзины и нажмите кнопку Delete (Удалить).

    (Нажмите, чтобы увеличить.)

  • AWS CodeCommit

    в) Если при работе с этим руководством был создан репозиторий AWS CodeCommit, перейдите на консоль CodeCommit и удалите созданный репозиторий.

    (Нажмите, чтобы увеличить.)


    в) На панели навигации выберите Settings (Параметры).

    • Нажмите Delete Repository (Удалить репозиторий).
    • Отобразится всплывающее окно с подтверждением. Введите название репозитория и нажмите кнопку Delete (Удалить).

    (Нажмите, чтобы увеличить.)

Вы успешно создали автоматизированный конвейер выпуска программного обеспечения с помощью AWS CodePipeline! С помощью CodePipeline вы создали конвейер, который использует GitHub, Amazon S3 или AWS CodeCommit в качестве исходного расположения для кода приложения, а затем развертывает код в инстансе Amazon EC2, управление которым осуществляет AWS Elastic Beanstalk. Ваш конвейер будет автоматически развертывать код всякий раз, когда в код вносятся изменения. Теперь вы на шаг ближе к внедрению непрерывного освоения в свою практику!

Вы научились создавать простой конвейер с помощью AWS CodePipeline. Получить дополнительную информацию можно н следующих ресурсах.