TGViewer
BlissCodeHub BlissCodeHub @blisscodehub · 159 subscribers
Post #120 343
#backend #полезно

Пробую писать примитивный CI/CD для Nest.js приложения с использованием GitHub Actions и PM2(часть 1)🧐

О том, что такое CI/CD простыми словами, можно почитать тут

1. Создание файла workflow

В корне вашего проекта создайте папку .github/workflows, а внутри нее файл deploy.yml
workflow — это набор инструкций для автоматизации процессов сборки, тестирования, деплоя и др, которые обычно выполняются вручную.

name: Deploy Nest.js app

on:
push:
branches:
- development # Триггер для запуска workflow при пуше в ветку "development". Для этого вам необходимо создать у себя эту ветку

jobs:
build:
runs-on: ubuntu-latest #Используется Ubuntu как окружение для запуска

steps:
- name: Checkout code
uses: actions/checkout@v3 #Клонируем репозиторий

- name: Set up Node.js
uses: actions/setup-node@v3 # Устанавливаем Node.js окружение
with:
node-version: 18 #Устанавливаем версию Node.js 18

- name: Install dependencies
run: yarn install # Установка зависимостей проекта

deploy:
runs-on: ubuntu-latest # Среда для выполнения деплоя
needs: build #Выполняется после этапа сборки

steps:
- name: Checkout code
uses: actions/checkout@v3 #Снова клонируем код на этапе деплоя

- name: Deploy to server via SSH with password
uses: appleboy/ssh-action@v0.1.2 # Используем экшн для SSH подключения
with:
host: ${{ secrets.SERVER_HOST }} # Host сервера из секретов
username: ${{ secrets.SERVER_USER }} # Имя пользователя для SSH-подключения
port: ${{ secrets.SERVER_PORT }} // SSH порт
password: ${{ secrets.SERVER_PASSWORD }} # Пароль для SSH, хранимый в секретах
script: | # Набор команд, которые будут выполняться на сервере
cd /uzver/BlissCode # Переходим в директорию проекта на сервере
git pull origin development --strategy-option=theirs # При выполнении команды git pull вы можете столкнуться с ошибкой - "Need to specify how to reconcile
divergent branches". Это происходит, когда в вашей локальной и удаленной ветке есть расхождения, и Git не знает, какую стратегию выбрать. Решение - указать стратегию слияния theirs, чтобы всегда использовать изменения из удаленной ветки

npx prisma migrate dev # Применяем миграции Prisma
yarn install # Устанавливаем зависимости проекта на сервере
yarn build # Собираем проект
pm2 restart all # Перезапускаем все процессы через pm2


2. Настройка секретов GitHub
Чтобы избежать хардкодинга важных данных, таких как SSH-пароли или ключи, используем GitHub Secrets:

• Перейдём в репозиторий на GitHub
• Откроем: Settings -> Secrets and variables -> Actions
• Создадим секреты для сервера (SERVER_HOST, SERVER_PASSWORD, SERVER_USER, SERVER_PORT)

3. Тестим

Попробуйте создать PR и слить в ветку development🖥

Присоединяйтесь к нашему общему
чату и Discord серверу :)
  • ❤ 3
More from @blisscodehub
  1. Nov 18, 2025Всех приветствую 🧐 Давно от нас не было новостей и постов в целом 😭 Как можно заметить,…
  2. Oct 11, 2025Спасибо, null, вот ваши NaN в валюте undefined 🤜
  3. Oct 6, 2025В Южной Корее парализована цифровая инфраструктура всего государства из-за пожара в дата-ц…
  4. Oct 2, 2025Норм в резюме такой бигтех поставить?
  5. Sep 20, 2025#backend #полезно Апдейты с предыдущего фидбека 🧐 🟣 Ситуация в backend (Golang/Node.js)…
  6. Sep 19, 2025#backend Всех приветствую🧐 Давно я вам ничего не рассказывал, и этот период был насыщен с…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →