May 25, 2024

Деплой React-приложения на сервер через GitHub Actions

1. Создаем в корне проекта директорию .github/workflows и файл deploy.yml

# deploy.yml

name: Deploy to Server
run-name: User ${{ github.actor }} is deploying to server

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Install dependencies
        run: npm install

      - name: Build React App
        run: npm run build

      - name: Deploy to Server
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SERVER_SSH_KEY }}
          port: ${{ secrets.SERVER_PORT }}
          script: |
            rm -rf /var/www/project-name/*
            cp -r ./build/* /var/www/project-name/

2. Перейдем в настройки репозитория на GitHub (Settings - Secrets and variables - Actions) и добавим следующие секреты:

  • SERVER_HOST - IP-адрес или доменное имя сервера;
  • SERVER_USER - имя пользователя для подключения по SSH;
  • SERVER_SSH_KEY - приватный SSH-ключ для подключения к серверу;
  • SERVER_PORT - порт для подключения по SSH (обычно - 22).