mirror of
https://github.com/dartdavros/chatballs.git
synced 2026-10-05 09:14:58 +03:00
Раньше compose монтировал с хоста Caddyfile, init-скрипты базы и генератор секретов. Из-за этого установка требовала рядом распакованный репозиторий, а файл, забытый при сборке релиза, Docker молча подменял пустым каталогом — и стек падал на первом старте у человека. Плюс production-образ backend вообще не собирался: COPY content ссылался на каталог, которого в репозитории нет, так что релиза не существовало ни на GitHub, ни на GitLab. Теперь весь дистрибутив — один compose.yaml со страницы релиза: curl -fsSL .../compose.yaml -o compose.yaml docker compose up -d --wait - Caddyfile переехал в свой образ шлюза (caddy validate — в сборке), init-скрипты базы — в свой образ postgres, генератор секретов — в backend-образ. Bind-mount'ов в production-манифесте не осталось. - Состояние установки — именованные тома вместо каталогов рабочего каталога. Заодно чинит загрузку файлов на Linux: том наследует владельца из образа (hub), тогда как bind-mount доставался контейнеру как root:root. - scripts/pin-release-compose.py закрепляет ссылки на образы по digest и падает, если хоть один ключ остался подстановкой. - GitHub-workflow собирает четыре образа и прикладывает к релизу compose.yaml (основной путь) и release.env (для `chatballs deploy`). - tests/cli/test_release_compose.py держит свойство: манифест без bind-mount'ов и полностью закрепляем по digest. - Из окружения шлюза убраны CHATBALLS_APP_DOMAIN и CHATBALLS_ACME_EMAIL — Caddyfile их не читает. Dev-контур не меняется по смыслу: compose.dev.yaml по-прежнему собирает всё из исходников и держит состояние в ./data. AUDIT-TODO.md — временный список остального из аудита; удаляется целиком, когда закрыт последний пункт. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
37 lines
1.3 KiB
YAML
37 lines
1.3 KiB
YAML
# GitLab CI/CD — canonical pipeline Chatballs (ADR-HUB-0028 / PLAN-CHATBALLS-0002).
|
|
# Application orchestration is owned only by the release-bundled `chatballs` CLI.
|
|
|
|
stages:
|
|
- validate
|
|
- test
|
|
- build
|
|
- release
|
|
- deploy
|
|
|
|
variables:
|
|
APP_DIR: "."
|
|
DOCKER_TLS_CERTDIR: ""
|
|
DOCKER_DRIVER: overlay2
|
|
|
|
BACKEND_IMAGE: "$CI_REGISTRY_IMAGE/backend:$CI_COMMIT_SHA"
|
|
FRONTEND_IMAGE: "$CI_REGISTRY_IMAGE/frontend:$CI_COMMIT_SHA"
|
|
BACKEND_LATEST_IMAGE: "$CI_REGISTRY_IMAGE/backend:latest"
|
|
FRONTEND_LATEST_IMAGE: "$CI_REGISTRY_IMAGE/frontend:latest"
|
|
|
|
# Шлюз и база — свои образы: Caddyfile и init-скрипты запечены внутрь,
|
|
# чтобы установка не требовала ничего рядом с compose.yaml.
|
|
GATEWAY_IMAGE: "$CI_REGISTRY_IMAGE/gateway:$CI_COMMIT_SHA"
|
|
POSTGRES_IMAGE: "$CI_REGISTRY_IMAGE/postgres:$CI_COMMIT_SHA"
|
|
GATEWAY_LATEST_IMAGE: "$CI_REGISTRY_IMAGE/gateway:latest"
|
|
POSTGRES_LATEST_IMAGE: "$CI_REGISTRY_IMAGE/postgres:latest"
|
|
|
|
GATEWAY_BASE_IMAGE: "caddy:2.8.4"
|
|
POSTGRES_BASE_IMAGE: "pgvector/pgvector:pg16"
|
|
REDIS_IMAGE: "redis:7-alpine"
|
|
COTURN_IMAGE: "coturn/coturn:4.6"
|
|
|
|
include:
|
|
- local: "/.gitlab/ci/validate-test.yml"
|
|
- local: "/.gitlab/ci/build-release.yml"
|
|
- local: "/.gitlab/ci/deploy.yml"
|