3.3 KiB
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.
Ревью фичи
- Разработчик пушит ветку
feature/*— CI автоматически гоняет тесты (репо → Действия). - Ревью: PR в Gitea (Запросы на слияние), либо локально:
git fetch origin git diff main origin/feature/<имя> - Слияние — через кнопку в PR, либо локально:
Пуш в
git switch main && git pull git merge --no-ff origin/feature/<имя> git pushmain= автодеплой.
Что делает пайплайн при пуше в main
- Тесты CRM (SQLite, изолированный каталог данных).
- На 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через сайт — не поднялось, прогон красный.
- pg_dump бэкап БД →
БД живёт в 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 репозитория (Действия не печатают их в лог).