493a14e2c8
- Updated `README.md` to include instructions for the new `redeploy-ubuntu.sh` script and added a link to the new `REDEPLOY_GUIDE.md`. - Created `REDEPLOY_GUIDE.md` detailing the redeployment process, including backup creation, code updates, and troubleshooting steps. - Introduced `redeploy-hint.md` for GitHub Actions automation example, outlining setup for automatic redeployment on push events. - Improved documentation structure for better navigation and clarity.
84 lines
2.5 KiB
Markdown
84 lines
2.5 KiB
Markdown
# 🔄 Автоматический Redeploy через GitHub Actions (пример)
|
|
|
|
Этот файл показывает, как настроить автоматическое обновление сервера при push в main.
|
|
|
|
## ⚠️ Важно
|
|
|
|
Этот workflow **НЕ** включен по умолчанию для безопасности. Чтобы включить:
|
|
|
|
1. Переименуйте этот файл: `redeploy-hint.md` → `redeploy.yml`
|
|
2. Настройте secrets в GitHub:
|
|
- `SSH_PRIVATE_KEY` - SSH ключ для доступа к серверу
|
|
- `SERVER_HOST` - IP адрес или домен сервера
|
|
- `SERVER_USER` - Пользователь на сервере
|
|
|
|
## Пример workflow:
|
|
|
|
```yaml
|
|
name: Redeploy to Production
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Deploy to server
|
|
uses: appleboy/ssh-action@master
|
|
with:
|
|
host: ${{ secrets.SERVER_HOST }}
|
|
username: ${{ secrets.SERVER_USER }}
|
|
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
|
script: |
|
|
cd /opt/ai-review
|
|
sudo git pull origin main
|
|
sudo ./redeploy-ubuntu.sh
|
|
|
|
- name: Check service status
|
|
uses: appleboy/ssh-action@master
|
|
with:
|
|
host: ${{ secrets.SERVER_HOST }}
|
|
username: ${{ secrets.SERVER_USER }}
|
|
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
|
script: |
|
|
sudo systemctl status ai-review --no-pager
|
|
|
|
- name: Notify on failure
|
|
if: failure()
|
|
run: echo "Deployment failed! Check the logs."
|
|
```
|
|
|
|
## Альтернатива: Webhook
|
|
|
|
Можно настроить webhook, который будет вызывать redeploy при push:
|
|
|
|
```bash
|
|
# На сервере создать endpoint для webhook
|
|
# /opt/ai-review/webhook-server.sh
|
|
|
|
#!/bin/bash
|
|
# Простой webhook сервер
|
|
while true; do
|
|
echo -e "HTTP/1.1 200 OK\n\n$(sudo /opt/ai-review/redeploy-ubuntu.sh 2>&1)" | nc -l -p 9000
|
|
done
|
|
```
|
|
|
|
Затем в GitHub:
|
|
1. Settings → Webhooks → Add webhook
|
|
2. Payload URL: `http://your-server:9000`
|
|
3. Content type: `application/json`
|
|
4. Events: `Just the push event`
|
|
|
|
## Безопасность
|
|
|
|
⚠️ **Не используйте автоматический деплой без:**
|
|
1. Тестов в CI/CD
|
|
2. Staging окружения
|
|
3. Возможности быстрого отката
|
|
4. Мониторинга после деплоя
|
|
|