🚀 Автоматизація деплою Node.js додатків з GitLab CI/CD

В версії React Native 0.79 команда розробників значно покращила продуктивність, оновила інструменти та додала вдосконалення, що спрощують життя розробникам. Це оновлення особливо корисне для тих, хто працює з кросплатформенними додатками для iOS, Android та інших платформ, адже воно значно покращує продуктивність та оптимізує процес розробки.

Крок 1: Створення файлу .gitlab-ci.yml

Першим кроком у налаштуванні автоматизованого CI/CD pipeline для вашого Node.js проекту є створення файлу .gitlab-ci.yml у корені проєкту. Цей файл описує структуру pipeline, визначаючи етапи для тестування та розгортання.

Крок 2: Додавання змінних середовища

Необхідно створити змінну у GitLab CI/CD з іменем ENV_FILE_CONTENT та зберегти в ній вміст локального файлу .env. Це дозволить автоматично відновити файл .env під час виконання CI/CD pipeline.

Крок 3: Генерація SSH ключів

Для підключення до вашого сервера через GitLab Runner потрібно згенерувати нову пару SSH ключів. Це дозволить налаштувати безпечне з'єднання з сервером без необхідності вводити пароль кожного разу.

Крок 4: Додавання приватного SSH ключа до GitLab

Приватний SSH ключ необхідно додати до GitLab як змінну CI/CD. Це дозволяє автоматично підключатися до сервера під час виконання pipeline.

Крок 5: Налаштування доступу SSH до сервера

Щоб налаштувати сервер для прийому SSH з'єднань, потрібно скопіювати публічний SSH ключ до файлу authorized_keys на сервері. Це дозволяє забезпечити безпечний доступ до сервера для автоматизованого розгортання.

Крок 6: Додавання відбитка SSH хоста

Для того, щоб уникнути запитів на підтвердження достовірності SSH хоста, необхідно додати відбиток хоста до GitLab як змінну SSH_KNOWN_HOSTS.

Крок 7: Налаштування pipeline для CI/CD

Далі потрібно налаштувати сам pipeline, описавши етапи тестування та розгортання. За допомогою цього pipeline GitLab буде автоматично виконувати команду для побудови та розгортання додатку після кожного пушу в основну гілку (main).

Ось приклад файлу .gitlab-ci.yml:

stages:
- test
- deploy
variables:
NODEENV: test
before
script:
- echo "$ENVFILECONTENT" > .env
test:
stage: test
image: node:18
script:
- npm install
- npm test
deploy:
stage: deploy
beforescript:
- mkdir -p ~/.ssh
- echo "$SSH
PRIVATEKEY" > ~/.ssh/ided25519
- chmod 600 ~/.ssh/ided25519
- echo "$SSH
KNOWNHOSTS" > ~/.ssh/knownhosts
script:
- |
ssh -i ~/.ssh/ided25519 -o StrictHostKeyChecking=no username@domain << 'EOF'
echo "Connected to server:"
pwd
cd /var/www/project
git pull origin main
npm install --production
npx sequelize-cli db:migrate
pm2 restart process
name
EOF
only:
- main

Висновки

  • Переконайтеся, що на сервері встановлені pm2, Node.js та Git.
  • Налаштуйте шляхи та команди відповідно до вашої структури проекту.
  • Використовуйте Protected Variables GitLab для захисту чутливої інформації.

Після налаштування pipeline ваш додаток буде автоматично перевірятися та деплоїтися при кожному пуші до гілки main, що значно спрощує процес автоматизації деплою.

Перекладено з: 🚀 Automating Node.js Deployment with GitLab CI/CD