Добавить .gitea/workflows/deploy_ssh.yml
Some checks failed
Deploy to Production / deploy (push) Failing after 8s
Deploy via SSH / deploy (push) Failing after 6s

This commit is contained in:
2026-01-12 20:31:25 +03:00
parent b1a752c7ab
commit 13dc06da7c

View File

@@ -0,0 +1,117 @@
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 соединение..."
# Создаем директорию для SSH
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# Копируем приватный ключ act_runner
cp /var/lib/act_runner/.ssh/id_ed25519 ~/.ssh/
chmod 600 ~/.ssh/id_ed25519
# Настраиваем known_hosts
ssh-keyscan -H localhost >> ~/.ssh/known_hosts
ssh-keyscan -H 127.0.0.1 >> ~/.ssh/known_hosts
# Тестируем подключение
ssh -i ~/.ssh/id_ed25519 deployer@localhost "echo '✅ SSH соединение установлено'"
- name: Backup current site
run: |
echo "💾 Создаем бэкап..."
ssh -i ~/.ssh/id_ed25519 deployer@localhost "
BACKUP_DIR=\"/var/backups/arseny.ahtamov.ru/\$(date +%Y%m%d-%H%M%S)\"
echo \"Создаем бэкап в: \$BACKUP_DIR\"
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 created: \$(date)\" > \"\$BACKUP_DIR/BACKUP_INFO.txt\"
echo \"From: /var/www/arseny.ahtamov.ru/html\" >> \"\$BACKUP_DIR/BACKUP_INFO.txt\"
echo \"✅ Бэкап создан в: \$BACKUP_DIR\"
echo \"📊 Файлов в бэкапе: \$(find \"\$BACKUP_DIR\" -type f | wc -l)\"
else
echo \"⚠️ Целевая директория не существует\"
fi
"
- name: Clean old backups
run: |
echo "🧹 Очищаем старые бэкапы..."
ssh -i ~/.ssh/id_ed25519 deployer@localhost "
# Удаляем бэкапы старше 7 дней
find /var/backups/arseny.ahtamov.ru/ -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \; 2>/dev/null || true
echo 'Текущие бэкапы:'
ls -la /var/backups/arseny.ahtamov.ru/ 2>/dev/null || echo 'Директория бэкапов пуста'
"
- name: Deploy files
run: |
echo "🚀 Начинаем деплой..."
# Создаем временный каталог для файлов
mkdir -p /tmp/deploy_artifacts
cp -r ./html/* /tmp/deploy_artifacts/ 2>/dev/null || echo "Нет файлов для копирования"
# Копируем файлы через SCP
scp -i ~/.ssh/id_ed25519 -r /tmp/deploy_artifacts/* deployer@localhost:/var/www/arseny.ahtamov.ru/html/ 2>/dev/null || echo "Некоторые файлы не скопированы"
# Альтернативный вариант через rsync
# rsync -avz -e "ssh -i ~/.ssh/id_ed25519" ./html/ deployer@localhost:/var/www/arseny.ahtamov.ru/html/
echo "✅ Файлы скопированы"
- name: Set permissions and restart nginx
run: |
echo "🔧 Устанавливаем права и перезапускаем nginx..."
ssh -i ~/.ssh/id_ed25519 deployer@localhost "
# Устанавливаем права
chown -R deployer:www-data /var/www/arseny.ahtamov.ru/html/ 2>/dev/null || echo 'Не удалось изменить владельца'
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
# Перезапускаем nginx через sudo
echo '🔄 Перезагружаем nginx...'
sudo nginx -t 2>&1 && echo '✅ Конфигурация nginx проверена' || echo '⚠️ Ошибка проверки конфигурации'
sudo systemctl reload nginx 2>&1 && echo '✅ Nginx перезагружен' || echo '⚠️ Не удалось перезагрузить nginx'
"
- name: Verify deployment
run: |
echo "🔍 Проверяем деплой..."
ssh -i ~/.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 '✅ Деплой завершен успешно!'
"