Files
RuvdsTest/docs/CI-CD.md
danamir 773dbb493e
Some checks failed
CI/CD / build-test-deploy (push) Has been cancelled
Add production deployment guide and harden compose for it
- docker-compose.yml: bind client/server ports to 127.0.0.1 only — the
  client container is the sole intended public entry point (it proxies
  /api/* to the server itself), a host-level nginx sits in front of it in
  production. Client__Origin now configurable via CLIENT_ORIGIN env var.
- docs/DEPLOY.md: step-by-step for a fresh Linux target (Docker install,
  clone, .env secrets, nginx + certbot).
- docs/CI-CD.md: runner registration for that same target machine, in
  "host" mode so the deploy step's `docker compose up -d` acts on the
  actual running stack.
2026-08-06 14:18:22 +03:00

52 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CI/CD (Gitea Actions)
Пайплайн — `.gitea/workflows/ci-cd.yml`. На каждый push/PR: юнит-тесты `Domain.Tests` +
`docker compose build` (проверка, что весь стек собирается). На push в `master` — дополнительно
`docker compose up -d` (реальный редеплой).
Раннер выполняет джобы **прямо на целевом сервере** (`ruvdstest.danamir.site`, тот же, что описан
в `docs/DEPLOY.md`) — это и есть логика деплоя: шаг "Deploy" в workflow просто выполняет
`docker compose up -d` в том же каталоге `/opt/ruvdstests`, поверх уже поднятого стека.
## Регистрация раннера
Выполняется один раз, на целевом сервере (там же, где разворачивали приложение), после того как
шаги 16 из `docs/DEPLOY.md` пройдены.
**1. Убедиться, что Actions включены** на вашем Gitea (Site Administration → пункт "Actions" должен
быть виден; если Gitea развёрнута в докере — переменная `GITEA__actions__ENABLED=true` в её
конфиге/окружении).
**2. Получить токен регистрации**: Site Administration → Actions → Runners → **Create new runner**
(или в настройках именно этого репозитория: Settings → Actions → Runners).
**3. Запустить раннер** (заполните токен и запустите сами — секрет никому больше не передаётся):
```bash
docker volume create gitea-runner-data
docker run -d --name gitea-ci-runner --restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
-v gitea-runner-data:/data \
-e GITEA_INSTANCE_URL=https://git.danamir.su \
-e GITEA_RUNNER_REGISTRATION_TOKEN=ВАШ_ТОКЕН_СЮДА \
-e GITEA_RUNNER_NAME=ruvdstest-prod \
-e GITEA_RUNNER_LABELS=host:host \
gitea/runner:latest
```
`host:host` — раннер выполняет джобы напрямую в своём собственном контейнере (никаких вложенных
контейнеров на каждый джоб), у него смонтирован docker.sock хоста — поэтому `docker compose`
внутри джоба управляет реальными контейнерами на этой машине. Джоб сам ставит себе `docker-cli` и
.NET SDK через `apk`/`dotnet-install.sh` (см. workflow) — образ раннера намеренно голый, чтобы не
поддерживать отдельный кастомный образ.
Проверить, что раннер подключился: Site Administration → Actions → Runners — должен появиться
`ruvdstest-prod` со статусом Idle/Online.
## Проверка
Сделайте любой коммит и запушьте в `master` — во вкладке **Actions** репозитория должен появиться
запуск, пройти тесты, сборку и деплой. После завершения `https://ruvdstest.danamir.site` уже
обслуживает обновлённую версию.