diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 8405fd7..f2a2faf 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -35,24 +35,7 @@ jobs: printf '%s\n' "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key ~/.ssh/known_hosts - - name: Код на сервер (rsync; .env, media, data и серверные файлы не трогаем) - run: | - command -v rsync >/dev/null || { apt-get update -qq && apt-get install -y -qq rsync; } - rsync -az --delete \ - -e "ssh -i ~/.ssh/deploy_key" \ - --exclude .git/ --exclude .env --exclude .agents/ \ - --exclude crm/media/ --exclude crm/data/ --exclude crm/tests/ \ - --exclude '*.zip' --exclude README.md --exclude SEO-REGISTRATIONS.md \ - --exclude backups/ \ - ./ ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:${{ secrets.DEPLOY_DIR }}/ - - # Гейт №1: сломанный compose/.env падает здесь, живые контейнеры не тронуты - - name: Pre-flight — валидация compose и env - run: | - ssh -i ~/.ssh/deploy_key ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} \ - "cd ${{ secrets.DEPLOY_DIR }} && docker compose config -q && echo 'compose+env ok'" - - # Гейт №2: дамп БД до любых изменений — деплой всегда обратим по данным + # Гейт №1: дамп БД до ЛЮБЫХ изменений — деплой всегда обратим по данным - name: Бэкап БД перед деплоем (ротация — храним 7) run: | ssh -i ~/.ssh/deploy_key ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} \ @@ -62,6 +45,23 @@ jobs: && ls -1t backups/db-pre-deploy-*.sql.gz | tail -n +8 | xargs -r rm -f \ && echo 'db backup ok'" + # Код обновляется git-pull-ом на сервере: .env, crm/media, crm/data, + # бэкапы и прочие незакоммиченные файлы защищены .gitignore + - name: Обновить код из git + run: | + ssh -i ~/.ssh/deploy_key ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} \ + "cd ${{ secrets.DEPLOY_DIR }} \ + && git fetch origin \ + && git reset --hard origin/main \ + && git clean -fdq crm site \ + && git log --oneline -1" + + # Гейт №2: сломанный compose/.env падает здесь, живые контейнеры не тронуты + - name: Pre-flight — валидация compose и env + run: | + ssh -i ~/.ssh/deploy_key ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} \ + "cd ${{ secrets.DEPLOY_DIR }} && docker compose config -q && echo 'compose+env ok'" + - name: Сборка и перезапуск run: | ssh -i ~/.ssh/deploy_key ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} \