Категорії
DevOps Web

Deploying to DigitalOcean With GitHub Actions (CI/CD)

У даній статті розглянемо яким чином можна реалізувати деплой проекту на DigitalOcean з використанням GithubAction базуючись на підходах CI/CD.

 

Створюємо новий droplet на digitalocean

На стороні digitalocean створюємо новий droplet (аналог віртуальної машини). У моєму випадку droplet не прив’язаний до домену, оскільки на даному етапі у цьому немає потреби. Створений droplet ви можете використовувати як серверне середовище для веб-сайту.

В якості операційної системи вибрано Ubuntu, оскільки вона є однією із найпопулярніших для розгортання веб – серверів, до того ж найкраще підходить для навчальних цілей.

Тепер потрібно отримати доступ до нашої системи. Для можна підключитись по SSH або підключитись використовуючи графічний інтерфейс digitalocean.

доступ до droplet
доступ до droplet

В результаті – отримуємо доступ до сервера з допомогою терміналу. Тепер ми можемо працювати на сервері та виконувати всі команди ОС Ubuntu з root – доступами.

доступ до сервера через термінал
доступ до сервера через термінал

 

Створення github – репозиторію

У нас є сервер на якому ми можемо розмістити наш проект, однак тепер потрібно створити репозиторій в якому буде зберігатись наш проект (код). Для цього потрібно мати акаунти на github та перейти на вкладку Repositories.

Створення нового репозиторію
Створення нового репозиторію

У даній репозиторії снаходитиметься код нашого проекту (наприклад, php проект, node.js – проект тощо) та конфігурації файли для реалізації ci/cd.

 

Генерування SSH ключів на стороні сервера

Для реалізації можливості CI/CD необхідно налаштувати звязок між github – репозиторієм та сервером. Для цього переходимо до терміналу та запускаємо команду:

ssh-keygen

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

Генерування ключів
Генерування ключів

Щоби переглянути вміст публічного ключа

cat .ssh/id_rsa.pub

Перегляд вмісту публічного ключа
Перегляд вмісту публічного ключа

Додавання ключів та SECRETS параметрів у Github

На стороні Github створимо Secrets – константи. Для цього перейдемо у необхідний репозиторій на github -> вкладку Settings -> Secrets -> Action

SERVER_PASSPHRASE

SSH_HOST – IP адреса сервера (в нашому випадку digitalocean)

SSH_KEY – приватний ключ, згенерований вище. Для перегляду ключа необхідно в терміналі виконати команду cat .ssh/id_rsa та скопіювати в буфер обміну. Після чого вставити на стороні Github

SSH_USERNAME – користувач (наприклад, root)

Додавання констант в Secrets
Додавання констант в Secrets

 

Створення deploy.yml файлу

Для реалізації ci/cd підходу необхідно розробити правила за якими наш проект буде розгортатись на сервері і таким чином впроваджуватись у production mode.

Створимо таку структуру директорій і файлів у проекті

.github/workflows/deploy.yml

У файл deploy.yml внесемо такий вміст

deploy.yml
deploy.yml

Відповідно до вищенаписаного ми вказуємо константи, що відповідають за під’єднання та авторизаціюю на сервері, копіюємо наш проект у певну директорію на сервері та з допомогою команд ОС Linux – створюємо додаткові директорії та файли.

Результат

При створенні нового коміта у вітку main буде відбуватись розгортання проекту на сервері використовуючи методологію ci/cd

Створимо новий файл та закомітимо його.

new commit
new commit

Переходимо у вкладку Actions

deploy process
deploy process

В результатів бачимо повідомлення про успішне виконання деплою.

Що ж відбувається на нашому сервері?

success result
success result

В результаті виконання деплою ми скопіювали останню версію проекту у папку cicdex та створили новий файл. Таким чином, у нас сервері знаходиться актуальна версія ПЗ.

 

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *