Найти в Дзене
Digital Мастерская

Автодеплой без рук и лишних нервов: как GitHub Actions превращает хаос в порядок 🚀

Используем GitHub Actions для автодеплоя Иногда я захожу к ребятам на проект и вижу одно и то же: код обновили, а на сервере всё по-старому. “Ой, я забыл залить…”, “Не получилось зайти по SSH…”, “Сейчас ручками поправлю…”. Это как качать грудь, но игнорировать спину — дисбаланс рано или поздно хлопнет. Когда я впервые автоматизировал деплой через GitHub Actions, у меня было ощущение, будто я наконец-то нанял себе невидимого ассистента: без ошибок, без усталости, без “переделаю потом”. Давай покажу, как это настроить так, чтобы твои апдейты выкатывались сами — быстро, чисто и стабильно. Зачем вообще нужен автодеплой? Автодеплой — это: меньше человеческих ошибок, меньше рутины, меньше зависимости от “того самого человека, который знает, как выкатывать”. Ты пушишь код → GitHub Actions запускает скрипт → сервер обновляется. Всё. Никаких SSH ночью, никаких забытых миграций, никаких “ой”. 🔧 Шаг 1. Создаём workflow в GitHub Actions В репозитории переходишь в: Actions → New workflow →

Используем GitHub Actions для автодеплоя
Используем GitHub Actions для автодеплоя

Иногда я захожу к ребятам на проект и вижу одно и то же: код обновили, а на сервере всё по-старому. “Ой, я забыл залить…”, “Не получилось зайти по SSH…”, “Сейчас ручками поправлю…”.

Это как качать грудь, но игнорировать спину — дисбаланс рано или поздно хлопнет.

Когда я впервые автоматизировал деплой через GitHub Actions, у меня было ощущение, будто я наконец-то нанял себе невидимого ассистента: без ошибок, без усталости, без “переделаю потом”.

Давай покажу, как это настроить так, чтобы твои апдейты выкатывались сами — быстро, чисто и стабильно.

Зачем вообще нужен автодеплой?

Автодеплой — это:

  • меньше человеческих ошибок,
  • меньше рутины,
  • меньше зависимости от “того самого человека, который знает, как выкатывать”.

Ты пушишь код → GitHub Actions запускает скрипт → сервер обновляется.

Всё. Никаких SSH ночью, никаких забытых миграций, никаких “ой”.

🔧 Шаг 1. Создаём workflow в GitHub Actions

В репозитории переходишь в:

Actions → New workflow → set up a workflow yourself

Создаёшь файл .github/workflows/deploy.yml:

name: Deploy to Server

on:

 push:

  branches: [ "main" ]

jobs:

 deploy:

  runs-on: ubuntu-latest

  steps:

   - name: Checkout

    uses: actions/checkout@v3

   - name: Copy files to server via SSH

    uses: appleboy/scp-action@v0.1.4

    with:

     host: ${{ secrets.SERVER_IP }}

     username: ${{ secrets.SERVER_USER }}

     key: ${{ secrets.SERVER_SSH_KEY }}

     source: "."

     target: "/var/www/project"

Секреты создаются в Settings → Secrets → Actions:

  • SERVER_IP
  • SERVER_USER
  • SERVER_SSH_KEY (приватный ключ)

Приватный ключ — в GitHub, публичный — на сервер в ~/.ssh/authorized_keys.

После пуша workflow сам доставит файлы.

⚙️ Шаг 2. Добавляем SSH-команды (миграции, сборка, рестарт)

Голые файлы — это не деплой. Часто нужны дополнительные шаги.

Добавим SSH-экшен:

- name: Run SSH commands

 uses: appleboy/ssh-action@v0.1.7

 with:

  host: ${{ secrets.SERVER_IP }}

  username: ${{ secrets.SERVER_USER }}

  key: ${{ secrets.SERVER_SSH_KEY }}

  script: |

   cd /var/www/project

   git pull

   npm install --production

   npm run build

   pm2 restart all

Теперь твой сервер сам:

  • тянет свежий код,
  • ставит зависимости,
  • билдит проект,
  • перезапускает процессы.

Чисто, как после правильной тренировки.

🚀 Шаг 3. Лайфхаки, которые экономят часы

🔸 Лайфхак 1. Не деплой ветки, если нет изменений

Добавь условие:

if: github.event.head_commit.message != 'skip deploy'

Пишешь в коммите “skip deploy” — workflow пропускается.

🔸 Лайфхак 2. Катись через rsync, а не через SCP

Если у тебя большой проект:

uses: burnett01/rsync-deployments@v7

Работает быстрее и умнее.

🔸 Лайфхак 3. Делай горячий бэкап

Перед обновлением:

tar -czf backup.tar.gz .

Если что-то пойдёт не так — откатишься за минуту.

🏁 Итог

GitHub Actions — это как тренажёр, который делает за тебя 30% работы, но результат идёт в плюс именно тебе.

Один раз настроил — и сервер начинает жить своей собственной спортивной дисциплиной: чисто, автоматизировано, без пропусков.

Не халтурь с автоматизацией — и твои проекты начнут расти так же стабильно, как мышцы на прогрессирующей нагрузке 💪

Если статья помогла — ставь лайк, подписывайся и напиши, как именно ты деплоишь свои проекты.

💪 Прокачиваем не только мышцы, но и цифровые проекты.