В этой статье мы рассмотрим процесс развертывания приложения Node на AWS Elastic BeanStalk с помощью действий Github.

Все это время я использовал TravisCI для своих развертываний, но когда я познакомился с Github Actions, я почувствовал, что пути назад нет. Действия Github упрощают развертывание вашего веб-приложения ❤.

Что такое Elastic BeanStalk?

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

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

Что такое действия Github?

Действия GitHub дают вам возможность автоматизировать рабочие процессы разработки программного обеспечения прямо из репозитория GitHub. Другими словами, you will be able to initiate the deployment of your application from the same place where your code is stored.

Еще одна замечательная особенность Github Actions заключается в том, что рабочие процессы могут выполняться в Linux, macOS, Windows и контейнерах на компьютерах, размещенных на GitHub. Веб-приложения Elastic Beanstalk полностью поддерживаются Github Actions, поэтому вы можете развернуть свое приложение прямо из репозитория.

В этой статье мы пытаемся достичь следующего:

Имея Действия, вы можете запускать такие функции, как беспрепятственное создание и развертывание контейнеров Docker. Когда вы объединяете действия в рабочие процессы, события могут запускать сложную серию процессов, которые будут выполняться в параллельной последовательности, что обеспечивает более гибкую архитектуру.

Автоматизируйте рабочий процесс от идеи до производства.

Начиная

Elastic Beanstalk автоматически создаст для нас экземпляр EC2, когда мы создадим наше приложение, именно здесь будет размещен наш сервер Node.js.

Шаги по настройке среды Elastic BeanStalk:

  1. Для настройки среды Elastic BeanStalk я рекомендую вам пройти пошаговое руководство по настройке среды EB до шага № 9, вы можете пропустить шаг балансировщика нагрузки или посмотреть это видео от AWS.
  2. Для повышения производительности вы можете настроить прокси-сервер для обслуживания статических файлов (например, HTML или изображений) из набора каталогов внутри вашего веб-приложения. Чтобы статистически развернуть приложение Node на EB, вам необходимо добавить .ebextensions Файл /deploy.config:

Следуйте этому для получения дополнительной информации о статическом обслуживании ваших файлов.

Настроив среду Beanstalk, вы также можете отслеживать ее работоспособность после каждой сборки в консоли EB:

Шаги по созданию вашего проекта:

  1. Установите зависимость для статического обслуживания вашего приложения Node.
npm i serve --save

2. В производственной папке вашего приложения Node не забудьте изменить startscript в package.jsonfile.

"scripts": {
    "start": "serve -s build",
}

Замените server.js файлом основного сервера, если вы назвали его другим именем. Это значит, что Elastic Beanstalk знает, какой файл использовать для запуска вашего сервера.

Шаги по созданию рабочего процесса Github Actions:

  1. Перейдите в репозиторий GitHub и нажмите кнопку вкладки Действия.

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

3. Вставьте в редактор фрагмент кода ниже и нажмите кнопку Начать фиксацию в правом углу. Добавьте сообщение о фиксации и нажмите кнопку Зафиксировать новый файл. Я добавил комментарии, чтобы объяснить каждый шаг этого рабочего процесса.

Здесь push and pull request events запускают этот рабочий процесс, но мы также можем запускать его при различных других событиях.

4. Откройте свой проект в среде IDE на своем компьютере и извлеките обновленный код из ветки master.

5. Теперь перейдите на вкладку Настройки вашего репозитория и в боковом меню выберите Секреты. Секреты - это ваши личные значения, такие как секретный ключ AWS и ключ доступа, которые не должны присутствовать непосредственно в вашем коде.

6. Нажмите кнопку Добавить новый секрет и добавьте свои секретные ключи AWS и ключи доступа с рекомендуемым именем AWS_ACCESS_KEY и AWS_SECRET_KEY..

Если вы все настроили успешно, ваш рабочий процесс должен выглядеть так:

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

Вы можете найти рабочий процесс и файлы конфигурации EB здесь: