98 lines
4.1 KiB
YAML
98 lines
4.1 KiB
YAML
name: Deploy via SSH
|
||
|
||
on:
|
||
push:
|
||
branches: [main, master]
|
||
workflow_dispatch:
|
||
|
||
jobs:
|
||
deploy:
|
||
runs-on: self-hosted
|
||
|
||
steps:
|
||
- name: Checkout code
|
||
uses: actions/checkout@v4
|
||
|
||
- name: Setup SSH
|
||
run: |
|
||
echo "🔧 Настраиваем SSH соединение..."
|
||
|
||
# Убедимся, что ключ существует
|
||
if [ -f "/var/lib/act_runner/.ssh/id_ed25519" ]; then
|
||
echo "✅ SSH ключ найден"
|
||
chmod 600 /var/lib/act_runner/.ssh/id_ed25519
|
||
else
|
||
echo "❌ SSH ключ не найден!"
|
||
exit 1
|
||
fi
|
||
|
||
# Настраиваем known_hosts
|
||
ssh-keyscan -H localhost >> /var/lib/act_runner/.ssh/known_hosts 2>/dev/null || true
|
||
ssh-keyscan -H 127.0.0.1 >> /var/lib/act_runner/.ssh/known_hosts 2>/dev/null || true
|
||
|
||
# Тестируем подключение
|
||
ssh -i /var/lib/act_runner/.ssh/id_ed25519 deployer@localhost "echo '✅ SSH соединение установлено'"
|
||
|
||
- name: Backup and deploy
|
||
run: |
|
||
echo "🚀 Выполняем бэкап и деплой..."
|
||
|
||
# Создаем бэкап
|
||
ssh -i /var/lib/act_runner/.ssh/id_ed25519 deployer@localhost "
|
||
echo '💾 Создаем бэкап...'
|
||
BACKUP_DIR=\"/var/backups/arseny.ahtamov.ru/\$(date +%Y%m%d-%H%M%S)\"
|
||
mkdir -p \"\$BACKUP_DIR\"
|
||
|
||
if [ -d \"/var/www/arseny.ahtamov.ru/html\" ]; then
|
||
cp -rp /var/www/arseny.ahtamov.ru/html/* \"\$BACKUP_DIR/\" 2>/dev/null || echo 'Некоторые файлы не скопированы'
|
||
echo \"✅ Бэкап создан в: \$BACKUP_DIR\"
|
||
else
|
||
echo \"⚠️ Целевая директория не существует\"
|
||
fi
|
||
|
||
# Очистка старых бэкапов
|
||
echo '🧹 Очищаем старые бэкапы...'
|
||
find /var/backups/arseny.ahtamov.ru/ -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \; 2>/dev/null || true
|
||
"
|
||
|
||
echo "📁 Копируем файлы на сервер..."
|
||
|
||
# Копируем файлы через SCP
|
||
scp -i /var/lib/act_runner/.ssh/id_ed25519 -r ./html/* deployer@localhost:/var/www/arseny.ahtamov.ru/html/ 2>/dev/null || echo "Файлы скопированы"
|
||
|
||
echo "🔧 Настраиваем права..."
|
||
|
||
# Устанавливаем права
|
||
ssh -i /var/lib/act_runner/.ssh/id_ed25519 deployer@localhost "
|
||
chown -R deployer:www-data /var/www/arseny.ahtamov.ru/html/ 2>/dev/null || true
|
||
find /var/www/arseny.ahtamov.ru/html/ -type d -exec chmod 755 {} \; 2>/dev/null || true
|
||
find /var/www/arseny.ahtamov.ru/html/ -type f -exec chmod 644 {} \; 2>/dev/null || true
|
||
"
|
||
|
||
- name: Restart nginx
|
||
run: |
|
||
echo "🔄 Перезапускаем nginx..."
|
||
ssh -i /var/lib/act_runner/.ssh/id_ed25519 deployer@localhost "
|
||
sudo nginx -t 2>/dev/null && echo '✅ Конфигурация nginx проверена' || echo '⚠️ Ошибка проверки конфигурации'
|
||
sudo systemctl reload nginx 2>/dev/null && echo '✅ Nginx перезагружен' || echo '⚠️ Не удалось перезагрузить nginx'
|
||
"
|
||
|
||
- name: Verify deployment
|
||
run: |
|
||
echo "🔍 Проверяем деплой..."
|
||
ssh -i /var/lib/act_runner/.ssh/id_ed25519 deployer@localhost "
|
||
echo '1. Количество файлов:'
|
||
find /var/www/arseny.ahtamov.ru/html/ -type f | wc -l
|
||
|
||
echo '2. Размер директории:'
|
||
du -sh /var/www/arseny.ahtamov.ru/html/
|
||
|
||
echo '3. Проверка index.html:'
|
||
if [ -f \"/var/www/arseny.ahtamov.ru/html/index.html\" ]; then
|
||
echo ' ✅ index.html существует'
|
||
else
|
||
echo ' ⚠️ Нет index.html'
|
||
fi
|
||
|
||
echo '✅ Деплой завершен успешно!'
|
||
" |