ci: деплой через git-pull вместо rsync (rsync отсутствует на VPS), бэкап БД первым шагом
CI/CD / Тесты CRM (push) Successful in 37s
CI/CD / Деплой neon-bar86.ru (push) Failing after 4m23s

This commit is contained in:
merrow committed 2026-10-11 23:19:46 +05:00
1 parent 86f3755f05
commit ce7f81fe17
1 file changed
+18 -18
+18 -18
View File
@@ -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 }} \