Files
WWW/.gitea/workflows/deploy_ssh.yml
ascet 13dc06da7c
Some checks failed
Deploy to Production / deploy (push) Failing after 8s
Deploy via SSH / deploy (push) Failing after 6s
Добавить .gitea/workflows/deploy_ssh.yml
2026-01-12 20:31:25 +03:00

117 lines
5.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 '✅ Деплой завершен успешно!'
"