This commit is contained in:
Dmitry 2025-11-23 00:43:40 +03:00
parent b5105726ab
commit 5bca12906b

View file

@ -49,7 +49,7 @@ jobs:
- name: Obtain Certificates - name: Obtain Certificates
run: | run: |
ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH' ssh -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
set -e set -e
echo "🔐 Checking Let's Encrypt certificates..." echo "🔐 Checking Let's Encrypt certificates..."
@ -113,7 +113,7 @@ jobs:
- name: Get Dependencies - name: Get Dependencies
run: | run: |
ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH' ssh -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
set -e set -e
cd ~/mnemo_cards_backend cd ~/mnemo_cards_backend
echo "📦 Getting dependencies..." echo "📦 Getting dependencies..."
@ -122,7 +122,7 @@ jobs:
- name: Compile Server - name: Compile Server
run: | run: |
ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH' ssh -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
set -e set -e
cd ~/mnemo_cards_backend cd ~/mnemo_cards_backend
echo "🔨 Compiling server..." echo "🔨 Compiling server..."
@ -131,7 +131,7 @@ jobs:
- name: Stop Service - name: Stop Service
run: | run: |
ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH' ssh -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
set -e set -e
echo "🛑 Stopping backend service..." echo "🛑 Stopping backend service..."
sudo systemctl stop mnemo_cards_server || true sudo systemctl stop mnemo_cards_server || true
@ -155,7 +155,7 @@ jobs:
- name: Update Service Configuration - name: Update Service Configuration
run: | run: |
ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH' ssh -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
set -e set -e
cd ~/mnemo_cards_backend cd ~/mnemo_cards_backend
echo "⚙️ Updating service configuration..." echo "⚙️ Updating service configuration..."
@ -165,7 +165,7 @@ jobs:
- name: Update Executable - name: Update Executable
run: | run: |
ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH' ssh -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
set -e set -e
cd ~/mnemo_cards_backend cd ~/mnemo_cards_backend
echo "🔄 Replacing executable..." echo "🔄 Replacing executable..."
@ -175,7 +175,7 @@ jobs:
- name: Configure Certificates - name: Configure Certificates
run: | run: |
ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH' ssh -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
set -e set -e
# Check certificates and configure mode # Check certificates and configure mode
# Используем multi-domain сертификат mnemo-cards.online (если есть) # Используем multi-domain сертификат mnemo-cards.online (если есть)
@ -193,7 +193,7 @@ jobs:
- name: Restart Service - name: Restart Service
run: | run: |
ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH' ssh -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
set -e set -e
echo "🚀 Restarting service..." echo "🚀 Restarting service..."
sudo systemctl daemon-reload sudo systemctl daemon-reload
@ -204,7 +204,7 @@ jobs:
- name: Ensure Nginx Running - name: Ensure Nginx Running
run: | run: |
ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH' ssh -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
set -e set -e
echo "🔍 Проверяем статус nginx..." echo "🔍 Проверяем статус nginx..."
if sudo systemctl is-active --quiet nginx; then if sudo systemctl is-active --quiet nginx; then
@ -284,13 +284,24 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: ghcr.io/cirruslabs/flutter:3.35.5 container: ghcr.io/cirruslabs/flutter:3.35.5
needs: ensure-nginx-running needs: ensure-nginx-running
if: always() if: always() && needs.ensure-nginx-running.result == 'success'
steps: steps:
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4
with: with:
node-version: '20' node-version: '20'
- name: Install Dependencies
run: |
apt-get update && apt-get install -y rsync openssh-client jq git nodejs npm
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
@ -303,16 +314,29 @@ jobs:
git config --global http.maxRequestBuffer 100M git config --global http.maxRequestBuffer 100M
git config --global core.compression 0 git config --global core.compression 0
- name: Install Dependencies - name: Check Nginx Before Web Deploy
run: | run: |
apt-get update && apt-get install -y rsync openssh-client jq git nodejs npm echo "🔍 Проверяем статус nginx перед деплоем web..."
ssh -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
- name: Setup SSH set -e
run: | if sudo systemctl is-active --quiet nginx; then
mkdir -p ~/.ssh echo "✅ nginx работает перед web деплоем"
echo "${{ secrets.SSH_KEY }}" > ~/.ssh/id_rsa # Тестируем доступность
chmod 600 ~/.ssh/id_rsa if curl -I --max-time 5 https://mnemo-cards.online/ 2>/dev/null | grep -q "200\|301\|302"; then
ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts echo "✅ mnemo-cards.online доступен"
else
echo "⚠️ mnemo-cards.online недоступен"
fi
if curl -I --max-time 5 https://code.mnemo-cards.online/ 2>/dev/null | grep -q "200\|301\|302"; then
echo "✅ code.mnemo-cards.online доступен"
else
echo "⚠️ code.mnemo-cards.online недоступен"
fi
else
echo "❌ nginx не работает перед web деплоем!"
exit 1
fi
ENDSSH
- name: Build Web App - name: Build Web App
working-directory: mnemo_cards_web_v2 working-directory: mnemo_cards_web_v2
@ -324,10 +348,56 @@ jobs:
- name: Deploy Web App - name: Deploy Web App
run: | run: |
echo "📦 Копируем веб-приложение..."
rsync -avz --delete mnemo_cards_web_v2/build/web/ \ rsync -avz --delete mnemo_cards_web_v2/build/web/ \
${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:/var/www/mnemo_cards/ ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:/var/www/mnemo_cards/
echo "✅ Веб-приложение скопировано"
- name: Fix Permissions - name: Fix Permissions and Verify
run: | run: |
ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} \ ssh -o StrictHostKeyChecking=no ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'ENDSSH'
"chown -R www-data:www-data /var/www/mnemo_cards && chmod -R 755 /var/www/mnemo_cards" set -e
echo "🔧 Исправляем права доступа..."
chown -R www-data:www-data /var/www/mnemo_cards
chmod -R 755 /var/www/mnemo_cards
echo "✅ Права исправлены"
echo "🔍 Проверяем nginx после деплоя web..."
if sudo systemctl is-active --quiet nginx; then
echo "✅ nginx работает"
# Перезагружаем nginx для применения новых файлов
echo "🔄 Перезагружаем nginx..."
if sudo nginx -t 2>/dev/null; then
sudo systemctl reload nginx
echo "✅ nginx перезагружен"
sleep 2
# Тестируем доступность
if curl -I --max-time 10 https://mnemo-cards.online/ 2>/dev/null | grep -q "200\|301\|302"; then
echo "✅ mnemo-cards.online доступен"
else
echo "⚠️ mnemo-cards.online недоступен"
fi
if curl -I --max-time 10 https://code.mnemo-cards.online/ 2>/dev/null | grep -q "200\|301\|302"; then
echo "✅ code.mnemo-cards.online доступен"
else
echo "⚠️ code.mnemo-cards.online недоступен"
fi
else
echo "❌ Ошибка в конфигурации nginx!"
sudo nginx -t || true
exit 1
fi
else
echo "❌ nginx не работает! Запускаем..."
sudo systemctl start nginx
sleep 2
if sudo systemctl is-active --quiet nginx; then
echo "✅ nginx запущен"
else
echo "❌ Не удалось запустить nginx!"
sudo systemctl status nginx --no-pager || true
exit 1
fi
fi
ENDSSH