ci: деплой через git-pull вместо rsync (rsync отсутствует на VPS), бэкап БД первым шагом
This commit is contained in:
1 parent
86f3755f05
commit
ce7f81fe17
1 file changed
+18
-18
+18
-18
@@ -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 }} \
|
||||
|
||||
Reference in new issue
Block a user