Files
neon-bar86.ru/README-devops.md
T
merrow 4c2356a45b
CI/CD / Деплой neon-bar86.ru (push) Successful in 25s
CI/CD / Тесты CRM (push) Successful in 35s
документация: README для разработчика и девопса (гит-цикл, деплой, откат)
2026-10-11 23:52:49 +05:00

3.3 KiB

Девопсу — ревью и деплой neon-bar86.ru

Прод: VPS neon-bar86.ru, каталог /opt/apps/neon-bar86.ru, контейнеры neon-site (8080) / neon-crm (47613) / neon-db (PostgreSQL). Наружу смотрит Caddy: neon-bar86.ru → 8080, crm.neon-bar86.ru → 47613.

Ревью фичи

  1. Разработчик пушит ветку feature/* — CI автоматически гоняет тесты (репо → Действия).
  2. Ревью: PR в Gitea (Запросы на слияние), либо локально:
    git fetch origin
    git diff main origin/feature/<имя>
    
  3. Слияние — через кнопку в PR, либо локально:
    git switch main && git pull
    git merge --no-ff origin/feature/<имя>
    git push
    
    Пуш в main = автодеплой.

Что делает пайплайн при пуше в main

  1. Тесты CRM (SQLite, изолированный каталог данных).
  2. На VPS по шагам:
    • pg_dump бэкап БД → backups/ (хранится 7 последних) — данные обратимы всегда;
    • git fetch + git reset --hard origin/main — код с сервера = код в репо (.env, crm/media, crm/data, backups защищены .gitignore и не трогаются);
    • pre-flight docker compose config -q — сломанный compose/env падает ДО троганья контейнеров;
    • docker compose up -d --build;
    • health-check /api/healthz через сайт — не поднялось, прогон красный.

БД живёт в docker-томе pgdata — деплой кода её не касается ни при каком исходе.

Проверка после деплоя

curl -s https://neon-bar86.ru/api/healthz          # {"ok": true}
# сайт и CRM открываются, логин в панель работает
ssh neon@neon-bar86.ru "docker ps"                 # три контейнера Up (healthy)

Ручной передеплой (без изменений кода)

git commit --allow-empty -m "redeploy" && git push

Откат

  • Код: git revert <sha> && git push — пайплайн задеплоит старую версию.
  • Данные (дампы на VPS, backups/):
    gunzip -c backups/<файл>.sql.gz | docker exec -i neon-db psql -U $POSTGRES_USER -d $POSTGRES_DB
    
    ⚠ Перезаписывает базу — сначала диагностика и стоп, затем восстановление.

Диагностика на VPS

ssh neon@neon-bar86.ru
docker ps                          # статусы контейнеров
docker logs neon-crm --tail 30     # почему не поднялся CRM
df -h /                            # диск ~82% — следить
docker image prune -f              # чистка dangling-образов

Лог деплоев — репо → Действия; лог CRM/Caddy — на сервере. Секреты только в .env на VPS и в secrets репозитория (Действия не печатают их в лог).