ci(deploy): прод-compose из приватного инфра-репо iistwin-infra (шаг 0.14)

Убраны git stash кастомизаций и восстановление compose из бэкапа вне репо.
Источник правды для прод-compose: iisultanov/iistwin-infra (приватный),
клонируется в /opt/crm-infra deploy-ключом при каждом деплое
This commit is contained in:
2026-09-08 14:27:29 +03:00
parent 03871b76a2
commit 0fb3b54b66
2 changed files with 27 additions and 12 deletions

View File

@@ -71,21 +71,20 @@ jobs:
set -e
cd /opt/crm
# 1. Сохранить кастомизации сервера
git stash push -m 'server-customizations' \
-- docker-compose.yml docker-entrypoint.sh \
server/index.ts shared/schema.ts \
client/src/services/auth.service.ts || true
# 2. Получить ровно ту версию, что в GitHub (без merge-конфликтов)
# 1. Получить ровно ту версию кода, что в GitHub (без merge-конфликтов)
git fetch origin main
git reset --hard origin/main
# 3. Восстановить кастомизации
git stash pop || true
# 4. Восстановить docker-compose из бэкапа (вне репозитория)
cp /opt/crm-server/docker-compose.yml.bak.serverfix docker-compose.yml
# 2. Прод-compose — из приватного инфра-репозитория (единственный источник правды).
# Раньше: git stash кастомизаций + копия из бэкапа вне репо (дрейф, шаг 0.14).
if [ ! -d /opt/crm-infra/.git ]; then
GIT_SSH_COMMAND="ssh -i /home/deploy/.ssh/id_ed25519_infra" \
git clone git@github.com:iisultanov/iistwin-infra.git /opt/crm-infra
else
git -C /opt/crm-infra fetch origin main
git -C /opt/crm-infra reset --hard origin/main
fi
cp /opt/crm-infra/docker-compose.prod.yml docker-compose.yml
# 5. Удалить старые/зависшие контейнеры, чтобы избежать
# Conflict: container name is already in use

View File

@@ -498,3 +498,19 @@
- Что изменено: jsdom 30 → ^26 (devDependencies).
- Как проверялось: vitest 118/118 локально; pr-check на этом коммите.
- Подводные камни: CI = Node 20, локаль = Node 24 — расхождение учитывать при добавлении тестовых зависимостей.
---
## [0.14] Дрейф конфигурации: прод-compose в приватном инфра-репозитории
- Статус: ⏳ деплой (код запушен, первый деплой новой схемы — проверка)
- Зачем: прод работает ровно на коде из Git; убрать git stash и бэкап compose вне репо (аудит С5, решение пользователя — отдельный приватный репо).
- Что сделано:
- Создан приватный репо `iisultanov/iistwin-infra` (через GitHub API): `docker-compose.prod.yml` (бывший .bak.serverfix с лимитами 0.4), `README.md` (план перехода), `.env.template` (32 ключа без значений).
- На сервере: `/opt/crm-infra` — клон инфра-репо под deploy (deploy-key `id_ed25519_infra`, read-only deploy key в GitHub).
- `deploy.yml`: удалены stash push/pop и `cp .bak.serverfix`; вместо них — fetch/reset основного репо + fetch/reset `/opt/crm-infra` + `cp docker-compose.prod.yml`.
- Чистка дрейфа на сервере: `git stash clear` (3 старых стеша, в т.ч. дубль /apps static — уже в репо), снят UU-конфликт, HEAD чист.
- Старый `/opt/crm-server/docker-compose.yml.bak.serverfix` сохранён (откат до первого успешного деплоя новой схемы).
- Как проверялось: clone от deploy — OK; первый деплой новой схемы — ниже в этой записи.
- Влияние на поиск/UX: нет.
- Подводные камни: deploy-ключи GitHub нельзя шарить между репо (422) — у infra свой ключ; `.env` по-прежнему только на сервере; Traefik-метки/сеть n8n_proxy теперь версионируются в iistwin-infra.