/
Danik-Off
/
ProjectV
Обзор
Документация
Войти
/
Danik-Off
/
ProjectV
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
.github/workflows/deploy.yml
112 строк
4 KB
Ovchinnikov Danila
update deploy and fix socket
08 апр 2025, 20:09
08 апр 2025, 20:09
60b63d0
Код
Авторство
О чём код?
name: CI/CD Pipeline on: push: branches: - main # основная ветка jobs: build-frontend: 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.11.1' - name: Install dependencies for frontend run: | cd frontend npm install - name: Build frontend run: | cd frontend npm run build # Собираем фронтенд - name: List frontend directory after build run: ls -la frontend - name: Upload frontend build uses: actions/upload-artifact@v4 with: name: frontend-build path: frontend/build build-backend: 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.11.1' - name: Install dependencies for backend run: | cd backend npm install - name: Upload backend files uses: actions/upload-artifact@v4 with: name: backend-files path: backend deploy-frontend: runs-on: ubuntu-latest needs: build-frontend steps: - name: Download frontend build uses: actions/download-artifact@v4 with: name: frontend-build path: ./frontend-build - name: List downloaded frontend build directory run: ls -la ./frontend-build - name: Deploy frontend to server env: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} # Base64-кодированная версия приватного ключа SERVER_USER: ${{ secrets.SERVER_USER }} SERVER_IP: ${{ secrets.SERVER_IP }} run: | # Декодируем приватный ключ из base64 и сохраняем в файл private_key echo "$SSH_PRIVATE_KEY" | base64 --decode > private_key chmod 600 private_key # Добавляем сервер в known_hosts для избежания запроса подтверждения mkdir -p ~/.ssh ssh-keyscan -H $SERVER_IP >> ~/.ssh/known_hosts # Копируем фронтенд через rsync rsync -avz -e "ssh -i private_key" ./frontend-build/ $SERVER_USER@$SERVER_IP:/www/wwwroot/projectVoice/frontend/build/ || { echo "rsync failed"; exit 1; } deploy-backend: runs-on: ubuntu-latest needs: build-backend steps: - name: Download backend files uses: actions/download-artifact@v4 with: name: backend-files path: ./backend - name: Deploy backend to server env: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} # Base64-кодированная версия приватного ключа SERVER_USER: ${{ secrets.SERVER_USER }} SERVER_IP: ${{ secrets.SERVER_IP }} run: | echo "$SSH_PRIVATE_KEY" | base64 --decode > private_key chmod 600 private_key mkdir -p ~/.ssh ssh-keyscan -H $SERVER_IP >> ~/.ssh/known_hosts rsync -avz -e "ssh -i private_key" ./backend/ $SERVER_USER@$SERVER_IP:/www/wwwroot/projectVoice/backend/ || { echo "rsync failed"; exit 1; } # Если необходимо, можно запустить установку зависимостей на сервере # Например, если у вас настроен SSH-доступ и на сервере Node.js: # ssh -i private_key $SERVER_USER@$SERVER_IP "cd /www/wwwroot/projectVoice/backend/"