# Gitea Actions Workflow-файлы в [workflows/](workflows/): | Workflow | Триггер | Назначение | |----------|---------|------------| | [ci.yaml](workflows/ci.yaml) | push/PR в `main`/`master` | openapi, web, go, bird2, commitlint (PR) | | [release.yaml](workflows/release.yaml) | после успешного CI (push в main) | semantic-release → tag, CHANGELOG, Gitea Release | | [publish.yaml](workflows/publish.yaml) | push тега `v*` | docker buildx bake → Container Registry | Подробнее о версионировании: [docs/releasing.md](../docs/releasing.md). ## CI (quality gates) Job **changes** вычисляет флаги по путям в diff (`openapi`, `go`, `web`, `bird_conf`, …). Изменение `.gitea/workflows/*` поднимает полный прогон. На **pull request** дополнительно запускается **commitlint** (Conventional Commits). Требования к runner: - Метка `ubuntu-latest`. - Job `bird2` ставит **bird2** из репозитория Ubuntu и вызывает `bird -c … -p`. - Job **publish** требует Docker и доступ к Container Registry. ## Release (semantic-release) После успешного CI на push в `main`/`master` workflow **Release** запускает `npx semantic-release` (корневой `package.json`, [.releaserc.json](../.releaserc.json)). Результат при releasable-коммитах: - git tag `vX.Y.Z`; - commit `CHANGELOG.md` с `[skip ci]`; - Gitea Release с release notes. ### Секреты Один PAT — **`ACTIONS_PAT`**: push/t/tags, releases, запись в Container Registry. Если не задан — fallback на **`gitea.token`** (нужны права на releases и packages в Gitea). `GITEA_URL`: `https://git.shts.su` (задано в workflow). ## Publish (образы) Запускается только при **push git-тега** `vX.Y.Z` (не при каждом push в main). Собираются все образы из `deploy/docker/*` (`docker buildx bake default --push`). Semver из тега передаётся в Go-бинарники (`VERSION`, `GIT_SHA`, `BUILD_TIME`). Registry: **`git.shts.su`**. Login: `${{ gitea.actor }}` / `${{ secrets.ACTIONS_PAT || gitea.token }}` (тот же **`ACTIONS_PAT`**, что и для release). ### Теги образов ```text git.shts.su//<имя>:<тег> ``` Имена: `evobgp-api`, `evobgp-all`, `evobgp-scheduler`, `evobgp-ingest`, `evobgp-render`, `evobgp-deploy`, `evobgp-node`, `evobgp-web`, `evobgp-web-all`, `evobgp-agent`, `evobgp-bird2`. Теги при релизе `v1.2.3`: `latest`, `v1.2.3`, короткий SHA, `sha-`. Пример: ```bash docker pull git.shts.su/myuser/evobgp-api:v1.2.3 ``` Подробности — [docs/quickstart.md](../docs/quickstart.md), [deploy/docker/README.md](../deploy/docker/README.md).