В версії 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
beforescript:
- echo "$ENVFILECONTENT" > .env
test:
stage: test
image: node:18
script:
- npm install
- npm test
deploy:
stage: deploy
beforescript:
- mkdir -p ~/.ssh
- echo "$SSHPRIVATEKEY" > ~/.ssh/ided25519
- chmod 600 ~/.ssh/ided25519
- echo "$SSHKNOWNHOSTS" > ~/.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 processname
EOF
only:
- main
Висновки
- Переконайтеся, що на сервері встановлені
pm2,Node.jsтаGit. - Налаштуйте шляхи та команди відповідно до вашої структури проекту.
- Використовуйте Protected Variables GitLab для захисту чутливої інформації.
Після налаштування pipeline ваш додаток буде автоматично перевірятися та деплоїтися при кожному пуші до гілки main, що значно спрощує процес автоматизації деплою.
Перекладено з: 🚀 Automating Node.js Deployment with GitLab CI/CD