Безперервні розгортання з GitHub, AWS CodePipeline та AWS Elastic Beanstalk
Що
Якщо ви ще не ознайомились з першою частиною цього посібника, обов'язково перегляньте посилання нижче.
[
Процес розгортання NodeJS TypeScript Docker додатка з AWS EBS
Як пакувати NodeJS TypeScript додаток, будувати і розгортати Docker-образ в AWS Elastic Beanstalk
medium.com
](https://medium.com/@codingwithmanny/nodejs-typescript-docker-deployment-process-with-aws-ebs-14796cd78392?source=post_page-----79664321ab91--------------------------------)
У цій статті ми розглянемо процес налаштування AWS CodePipeline для автоматичного розгортання нашого коду з GitHub в нашому існуючому Docker-середовищі на Elastic Beanstalk.
Ми пропустимо процес збірки і зосередимось на іншому посібнику, але основна мета цього — автоматизувати наші розгортання.
Чому
Якщо ви ще не здогадались, основною перевагою є те, що нам не доведеться вручну розгортати кожен раз, коли нова функція додається в наш репозиторій GitHub. Elastic Beanstalk також має перевагу безперервних розгортань, тому наш додаток завжди буде працювати, а коли буде розгорнутий новий код, перерв не буде.
Оскільки ручне розгортання повинно бути застарілим
Також є інші переваги від використання CodePipeline, які ми зможемо налаштувати пізніше, наприклад, створення Docker-образу, збереження його в реєстрі, запуск тестів і навіть можливі сповіщення про розгортання.
Вимоги
- Репозиторій GitHub (Існуючий кодовий репозиторій)
- Існуючий AWS Docker Elastic Beanstalk інстанс
Налаштування CodePipeline
Наступні кроки включають створення нового CodePipeline, асоціацію з існуючим репозиторієм GitHub і підключення до існуючого Elastic Beanstalk інстансу.
Перший крок — перейдіть до CodePipeline.
Консоль управління AWS — Code Pipeline
Після цього на панелі CodePipeline натискаємо Створити пайплайн у верхньому правому куті.
Панель управління AWS Code Pipeline
Це ініціює майстра налаштування або серію кроків для налаштування нашого CodePipeline.
1. Вибір налаштувань пайплайна
Цей перший крок включає налаштування імені, дозволів і параметрів зберігання для пайплайна.
Виберіть Ім’я пайплайна, яке вам подобається, але, ймовірно, щось, що схоже на ім’я додатка, який ви розгортаєте.
Оберіть Нова роль сервісу, якщо у вас ще немає такої ролі, яка автоматично створить Ім’я ролі та надасть дозволи на виконання всіх необхідних дій для розгортання нашого інстансу.
AWS CodePipeline — Крок 1 — Налаштування пайплайна
Для додаткових налаштувань ви можете залишити значення за замовчуванням для Місце зберігання артефактів та Ключі шифрування.
Для контексту, Місце зберігання артефактів — це місце для зберігання кожного результату на кожному кроці пайплайна. Якщо один крок вносить зміни, результат цього кроку зберігається в S3, і цей результат може бути використаний для наступного кроку.
Після завершення натискаємо Далі.
AWS CodePipeline — Крок 1 — Додаткові налаштування
Додати етап джерела
Крок 2 має на меті асоціювати кодовий репозиторій, з якого пайплайн буде витягувати код, та визначити, як він буде виявляти зміни для активації пайплайна.
Для Постачальника джерела ми використовуватимемо GitHub.
AWS CodePipeline — Крок 2 — Джерело
Після вибору з'явиться кнопка Підключити, натискайте та надайте AWS дозвіл для доступу до репозиторію GitHub.
Надання авторизації AWS CodePipeline до репозиторію GitHub
Після підключення виберіть Репозиторій, шукаючи його за назвою.
Основною гілкою, яку ми використовуватимемо для активації нашого пайплайна, буде master
, що є загальноприйнятою практикою.
Для Опцій виявлення змін вибираємо Webhook-и GitHub, щоб щоразу, коли ми зливаємо код до нашої гілки master
або безпосередньо пушимо в master
, це спровокувало активацію пайплайна.
Натискаємо Далі.
AWS CodePipeline — Крок 2 — Джерело — GitHub
3. Додати етап збірки
Цей крок буде швидким, оскільки ми вибираємо Пропустити етап збірки, бо не будемо використовувати його в цьому посібнику.
Натискаємо Пропустити етап збірки.
AWS CodePipeline — Крок 3 — Збірка
4. Етап розгортання
Цей крок полягає у визначенні, куди буде розгорнуто наш код, або який AWS сервіс ми використаємо для роботи з нашим кодом.
У нашому випадку вибираємо AWS Elastic Beanstalk для нашого Постачальника розгортання.
Оберіть Регіон, в якому розгорнуто ваш Elastic Beanstalk.
Пошукайте та виберіть Назву додатка в цьому регіоні.
⚠️Примітка: Якщо ви не бачите назву свого додатка, перевірте, чи вірний регіон вибрано у верхньому правому куті вашої консолі AWS. Якщо це не так, вам потрібно вибрати правильний регіон і, можливо, почати цей процес з самого початку.
Пошукайте та виберіть Назву середовища вашого додатка.
Натискаємо Далі.
AWS CodePipeline — Крок 4 — Розгортання
Огляд
Цей крок має на меті переглянути всі налаштування нашого пайплайна, щоб підтвердити перед його створенням.
AWS CodePipeline — Крок 4 — Огляд Частина 1
Натискаємо Створити пайплайн.
AWS CodePipeline — Крок 4 — Огляд — Створити пайплайн
Пайплайн ініційовано
Після того як ви створите пайплайн, процес автоматично витягне код з репозиторію GitHub і розгорне його безпосередньо на Elastic Beanstalk.
AWS CodePipeline — Витягування з GitHub
AWS CodePipeline — Розгорнуто на EBS
Підтвердження розгортання
Якщо ми перейдемо до нашого додатка Elastic Beanstalk, ми повинні побачити, як сервіс починає розгортання, а потім переходить до стану успішного розгортання.
Додаток Elastic Beanstalk — Розгортання
Додаток Elastic Beanstalk — Успішно розгорнуто
Якщо ми перейдемо за URL-адресою додатка, ми повинні побачити щось подібне до нашого першого розгортання з попереднього посібника.
Додаток Elastic Beanstalk — Додаток розгорнуто
Перегляд розгортання в дії
Наступна частина полягає в тому, щоб внести зміни до нашого репозиторію GitHub і побачити, як зміни автоматично розгортаються.
Зміна коду
Ви можете використовувати свій власний репозиторій, але для цієї частини ми будемо використовувати цей репозиторій:
[
codingwithmanny/nodets-docker-app
Contribute to codingwithmanny/nodets-docker-app development by creating an account on GitHub.
github.com
](https://github.com/codingwithmanny/nodets-docker-app/tree/master?source=post_page-----79664321ab91--------------------------------)
Зміна, можливо, вже є в репозиторії, але новий рядок, який ми додаємо, щоб показати назву середовища в кінцевій точці:
const ENVIRONMENT = process.env.NODE_ENV || 'development';...app.get('/', (_req, res) => res.send({ version: VERSION, environment: ENVIRONMENT }));
Внесіть зміни та або зробіть commit і push безпосередньо в master
, або створіть новий pull request і потім злийте цей запит у гілку master
.
Після того, як зміни будуть запушені або злиті, ви зможете побачити, як CodePipeline автоматично витягне та розгорне цей новий код.
Новий код розгорнуто
Що далі
Наступним кроком буде впровадження та автоматизація процесу збірки, передача додаткових змінних середовища, впровадження логування, додавання доступу через ssh та, можливо, сповіщення.
Якщо ви ще не читали першу частину цієї статті, ознайомтеся з наступним:
[
NodeJS TypeScript Docker Deployment Process With AWS EBS
How To Package A NodeJS TypeScript App, Build & Deploy The Docker Image To AWS Elastic Beanstalk
medium.com
](https://medium.com/@codingwithmanny/nodejs-typescript-docker-deployment-process-with-aws-ebs-14796cd78392?source=post_page-----79664321ab91--------------------------------)
Якщо ця стаття була корисною для вас, будь ласка, поділіться нею в Twitter 🐦 або інших соціальних мережах. Дякую за увагу.
🙏
Будь ласка, також підписуйтесь на мене в Twitter: @codingwithmanny та в Instagram на @codingwithmanny.
Інші статті, які я написав
[
Як автоматизувати збірки Docker за допомогою GitHub
Створіть NodeJS додаток, завантажте його до репозиторію GitHub і налаштуйте автоматичну збірку на Docker Hub
medium.com
](https://medium.com/yellowcode/how-to-automate-docker-builds-with-github-470cb272babf?source=post_page-----79664321ab91--------------------------------)
[
Розгортання ReactJS з Docker
Як упакувати ReactJS в Docker і розгорнути його на Digital Ocean
medium.com
](https://medium.com/@codingwithmanny/deploying-reactjs-with-docker-ac16728c0896?source=post_page-----79664321ab91--------------------------------)
[
Розгортання React на Firebase за допомогою CircleCI
Як автоматично розгорнути React на Firebase Hosting з CircleCI
medium.com
](https://medium.com/@codingwithmanny/deploy-react-to-firebase-with-circleci-b8f16c17a28c?source=post_page-----79664321ab91--------------------------------)
Перекладено з: Automating NodeJS TS Deployments With CodePipeline To Elastic Beanstalk