Изучив это руководство, вы научитесь создавать конвейер автоматизированного выпуска программного обеспечения с развертыванием рабочего образца приложения. Вы создадите конвейер с помощью AWS CodePipeline — сервиса для построения, тестирования и развертывания кода после любых изменений. В качестве исходного расположения кода образца приложения вы будете использовать аккаунт GitHub, корзину Amazon Simple Storage Service (S3) или репозиторий AWS CodeCommit. Кроме того, в качестве целевого объекта развертывания образца приложения будет использоваться AWS Elastic Beanstalk. Готовый конвейер сможет обнаруживать изменения, внесенные в исходный репозиторий, где хранится образец приложения, а затем автоматически обновлять рабочий образец приложения.

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

Все действия, описанные в данном учебном пособии, доступны на уровне бесплатного пользования.

Управление ресурсами AWS

Вход в Консоль

Конвейеру непрерывного развертывания потребуется целевая среда с виртуальными серверами или инстансы Amazon EC2, где будет развернут образец кода. Вы подготовите эту среду до создания конвейера.


а) Чтобы упростить процесс создания и настройки инстансов EC2 в рамках работы с этим руководством, вы создадите образец среды с помощью AWS Elastic Beanstalk. Elastic Beanstalk позволяет легко размещать веб-приложения без необходимости запускать, настраивать и обслуживать виртуальные серверы самостоятельно. Сервис автоматически подготавливает и обслуживает инфраструктуру (например, виртуальные серверы, балансировщики нагрузки и т. д.) и предоставляет стек приложений (например, ОС, язык и платформу, веб-сервер, сервер приложений и т. д.).


b) Выберите PHP из раскрывающегося меню и нажмите кнопку Launch Now (Запустить).

Примечание. Если вы уже создали приложение Elastic Beanstalk, нажмите Create New Application (Создать новое приложение) в правом верхнем углу. Назовите свое приложение и создайте новую среду веб-сервера. Выберите PHP в качестве платформы, а Single Instance (Один инстанс) — в качестве типа среды. Если вы планируете осуществлять удаленный вход в свои инстансы, выберите пару ключей. В противном случае оставьте значения по умолчанию для остальных параметров и создайте среду для своего конвейера непрерывного развертывания.

continuous-delivery-pipeline-1

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

continuous-delivery-pipeline-1

c) Elastic Beanstalk начнет создавать образец среды для развертывания вашего приложения. Сервис создаст инстанс Amazon EC2, группу безопасности, группу Auto Scaling, корзину Amazon S3, тревоги Amazon CloudWatch и доменное имя для вашего приложения.

Примечание. Это займет несколько минут.

continuous-delivery-pipeline-1c

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

continuous-delivery-pipeline-1c

В этом шаге извлекается экземпляр кода образца приложения и выбирается источник для размещения кода. Конвейер принимает код из исходного расположения и выполняет с ним различные действия.

В качестве исходного расположения можно использовать один из трех вариантов: репозиторий GitHub, корзину Amazon S3 или репозиторий AWS CodeCommit. Выберите предпочтительный вариант и выполните действия ниже:

 

  • GitHub

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

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

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

    continuous-delivery-pipeline-2a
  • Amazon S3

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

    continuous-delivery-pipeline-2a1

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

    continuous-delivery-pipeline-2a1

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

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

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

    continuous-delivery-pipeline-2b2

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

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

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

    continuous-delivery-pipeline-2d

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

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

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

    continuous-delivery-pipeline-2g

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

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

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

    continuous-delivery-pipeline-2f
  • AWS CodeCommit

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

    continuous-delivery-pipeline-2a1

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

    continuous-delivery-pipeline-2a1

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

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

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

    continuous-delivery-pipeline-2b2

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

    continuous-delivery-pipeline-2b3

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

    continuous-delivery-pipeline-2b3

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

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

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

    continuous-delivery-pipeline-2c3

    f. Подключитесь к репозиторию и отправьте в него экземпляр образца файла.  См. инструкции в разделе Подключение к репозиторию AWS CodeCommit.

В этом шаге создается и настраивается простой конвейер с двумя действиями: исходное расположение и развертывание. В CodePipeline необходимо указать расположения исходного репозитория и среды развертывания.


а) Щелкните здесь, чтобы открыть консоль AWS CodePipeline.

  • На странице приветствия нажмите Create pipeline (Создать конвейер)
  • Если вы используете AWS CodePipeline впервые, вместо приветствия отобразится страница с вводными сведениями. Нажмите Get Started (Начать работу).
continuous-delivery-pipeline-3

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

continuous-delivery-pipeline-3

b) На странице Step 1: Name (Шаг 1. Имя):

  • Pipeline name (Имя конвейера). Введите имя конвейера enter the name for your pipeline — DemoPipeline.
  • Нажмите кнопку Next step (Следующий шаг).

Примечание. Изменить имя конвейера после создания конвейера невозможно.

continuous-delivery-pipeline-3b

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

continuous-delivery-pipeline-3b

c) На странице Step 2: Source (Шаг 2. Исходное расположение) выберите ранее выбранное вами исходное расположение и выполните действия ниже:

  • GitHub

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

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

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

    continuous-delivery-pipeline-3c

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

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

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

    continuous-delivery-pipeline-3e
  • 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 (Следующий шаг).
    continuous-delivery-pipeline-3c2

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

    continuous-delivery-pipeline-3c2
  • AWS CodeCommit

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

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

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

    continuous-delivery-pipeline-3c3

d. Для создания настоящего конвейера непрерывного развертывания требуется этап сборки, на котором код компилируется и проходит модульное тестирование. CodePipeline позволяет подключить выбранного вами поставщика сборок в конвейер. Однако в этом руководстве этап сборки не рассматривается.

  • На странице Step 3: Build (Шаг 3. Сборка) выберите No Build (Без сборки).
  • Щелкните Next step (Следующий шаг).

 

continuous-delivery-pipeline-3f

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

continuous-delivery-pipeline-3f

e. На странице 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 (Исходное расположение) — это имя первого этапа конвейера

continuous-delivery-pipeline-3g

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

continuous-delivery-pipeline-3g

f. На странице 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.

continuous-delivery-pipeline-3fa

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

continuous-delivery-pipeline-3fa

На этом этапе запускается ваш конвейер. После создания конвейер начнет работать автоматически. Сначала он обнаружит код образца приложения в вашем исходном расположении, свяжет файлы и переместит их на второй определенный вами этап. На этом этапе конвейер передает код в Elastic Beanstalk, где находится инстанс EC2, в котором будет размещен ваш код. Elastic Beanstalk обрабатывает развертывание кода в инстансе EC2.


а) На странице Step 6: Review (Шаг 6. Проверка) проверьте информацию и нажмите кнопку Create pipeline (Создать конвейер).

continuous-delivery-pipeline-4

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

continuous-delivery-pipeline-4

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

Чтобы убедиться, что конвейер выполнил успешно все операции, отслеживайте прогресс конвейера на каждом этапе. Статус каждой страницы изменится с No executions yet (Нет выполненных действий) на In Progress (Выполняется), а затем — на Succeeded (Успешно) или Failed (Сбой). Конвейер должен завершить первый цикл операций за несколько минут.

continuous-delivery-pipeline-4a

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

continuous-delivery-pipeline-4a

c) В области состояния этапа «Бета» нажмите AWS Elastic Beanstalk

continuous-delivery-pipeline-4a2

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

continuous-delivery-pipeline-4a2

d. Откроется консоль AWS Elastic Beanstalk с подробными сведениями о развертывании.

  • Нажмите созданную ранее среду Default-Environment
continuous-delivery-pipeline-4b

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

continuous-delivery-pipeline-4b

e. Нажмите URL-адрес, отображаемый в правой верхней части страницы, чтобы просмотреть развернутый вами образец веб-сайта.

continuous-delivery-pipeline-6e

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

continuous-delivery-pipeline-6e

В этом шаге проверяется образец кода и подтверждаются изменения в репозитории. CodePipeline обнаруживает обновленный образец кода и автоматически инициирует его развертывание в инстанс EC2 через Elastic Beanstalk. 

Обратите внимание, что развернутый вами образец веб-страницы относится к AWS CodeDeploy — сервису, автоматизирующему развертывание кода. В CodePipeline сервис CodeDeploy является альтернативой использованию Elastic Beanstalk для развертывания. Давайте обновим образец кода, чтобы в нем правильно отражался тот факт, что вы развернули образец с помощью Elastic Beanstalk.

  • GitHub

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

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

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

    continuous-delivery-pipeline-5b1

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

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

    continuous-delivery-pipeline-5c

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

    continuous-delivery-pipeline-5c

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

    continuous-delivery-pipeline-5c1

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

    continuous-delivery-pipeline-5c1
  • Amazon S3

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


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

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

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

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

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

    continuous-delivery-pipeline-6b2

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

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

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

    continuous-delivery-pipeline-6c2

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

    continuous-delivery-pipeline-6c2
  • AWS CodeCommit

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


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

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

    continuous-delivery-pipeline-6b2

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

    continuous-delivery-pipeline-6b2

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


d. Вернитесь в свой конвейер на консоли CodePipeline. Через несколько минут вы увидите, что исходное расположение поменяло цвет и стало синим, что означает, что конвейер обнаружил изменения, которые вы внесли в исходный репозиторий. После этого конвейер автоматически переместит обновленный код в Elastic Beanstalk.

  • После того как статус конвейера сменится на Succeeded (Успешно), в области статуса на этапе «Бета» щелкните AWS Elastic Beanstalk.
continuous-delivery-pipeline-4a2

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

continuous-delivery-pipeline-4a2

e. Откроется консоль AWS Elastic Beanstalk с подробными сведениями о развертывании. Выберите созданную ранее среду Default-Environment.

continuous-delivery-pipeline-4b

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

continuous-delivery-pipeline-4b

f. Нажмите URL-адрес, отображаемый в правой верхней части страницы, чтобы просмотреть пример веб-сайта еще раз.  Ваш текст был автоматически обновлен конвейером непрерывного развертывания!

 

continuous-delivery-pipeline-6e

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

continuous-delivery-pipeline-6e

Чтобы избежать необходимости вносить изменения в дальнейшем, необходимо удалить все ресурсы, запущенные при работе с этим руководством, что включает конвейер, приложение Elastic Beanstalk и исходную систему, настроенную для размещения кода.  


а) В первую очередь необходимо удалить конвейер.

  • В представлении конвейера нажмите Edit (Изменить)
  • Нажмите Delete (Удалить).
  • Введите название конвейера и нажмите кнопку Delete (Удалить).
continuous-delivery-pipeline-5d-6

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

continuous-delivery-pipeline-5d-6

b) Во-вторых, необходимо удалить приложение Elastic Beanstalk.

  • Перейдите на консоль Elastic Beanstalk. 
  • Нажмите Actions (Действия).
  • Затем нажмите Terminate Environment (Завершить работу среды).
continuous-delivery-pipeline-6

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

continuous-delivery-pipeline-6
  • Amazon S3

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

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

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

    continuous-delivery-pipeline-6d
  • AWS CodeCommit

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

    continuous-delivery-pipeline-7a

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

    continuous-delivery-pipeline-7a

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

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

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

    continuous-delivery-pipeline-7b

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

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

Да
Нет