# Gitea Actions Workflow: [workflows/ci.yaml](workflows/ci.yaml). | Job | PR | push в main | |-----|-----|-------------| | changes, openapi, web, go, bird2 | quality gates | quality gates | | commitlint | да | — | | **release** | — | semantic-release + docker push (один run) | Подробнее: [docs/releasing.md](../docs/releasing.md). ## CI (quality gates) Job **changes** вычисляет флаги по путям в diff. Полный прогон (все узлы openapi / web / go / bird2 в графе): `.gitea/workflows/*`, `scripts/*`, `.golangci.yml`, `.pre-commit-config.yaml`, корневой `package.json` / `.releaserc.json`. Отдельно: `migrations/*`, `docs/openapi.yaml` → `go` / `openapi` и т.д. (см. `ci.yaml`). На **pull request** — **commitlint** (Conventional Commits). Runner: `ubuntu-latest`, **bird2** из apt, Docker для job **release**. ## Release (job в ci.yaml) После успешных quality gates на **push в main** job **release**: 1. `npx semantic-release` — тег `vX.Y.Z` на **текущий commit** (без дополнительного commit в main). 2. Gitea Release + `CHANGELOG.md` как attachment (не в git). 3. `docker buildx bake default --push` с `VERSION=X.Y.Z` — в том же job. Если releasable-коммитов нет — semantic-release no-op, образы не публикуются. ### Секреты **`ACTIONS_PAT`**: push tags, releases, Container Registry. Fallback: **`gitea.token`**. ### Теги образов ```text git.shts.su//<имя>:latest git.shts.su//<имя>:v1.2.3 git.shts.su//<имя>:1.2.3 git.shts.su//<имя>: git.shts.su//<имя>:sha- ``` Имена образов: `evobgp-api`, `evobgp-all`, `evobgp-scheduler`, `evobgp-ingest`, `evobgp-render`, `evobgp-deploy`, `evobgp-node`, `evobgp-web`, `evobgp-web-all`, `evobgp-agent`, `evobgp-bird2`. **Удалённый спикер** (compose `deploy/compose/docker-compose.remote-speaker.yaml`): `evobgp-bird2`, `evobgp-agent`, `evobgp-node` (fallback profile); Traefik — внешний `traefik:latest`. CI: `scripts/validate-remote-speaker-compose.sh`. Пример: ```bash docker pull git.shts.su/myuser/evobgp-api:1.2.3 ``` См. [deploy/docker/README.md](../deploy/docker/README.md), [docs/quickstart.md](../docs/quickstart.md).