- Added automatic versioning based on git tags using semantic-release in Gitea Actions. - Introduced new API endpoints `GET /version` and `GET /v1/version` to expose build metadata. - Updated Docker build process to include version and build time information in Go binaries. - Enhanced documentation with details on release processes and versioning guidelines. - Integrated version display in the web application for better user visibility.
Gitea Actions
Workflow-файлы в workflows/:
| Workflow | Триггер | Назначение |
|---|---|---|
| ci.yaml | push/PR в main/master |
openapi, web, go, bird2, commitlint (PR) |
| release.yaml | после успешного CI (push в main) | semantic-release → tag, CHANGELOG, Gitea Release |
| publish.yaml | push тега v* |
docker buildx bake → Container Registry |
Подробнее о версионировании: 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).
Результат при 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).
Теги образов
git.shts.su/<owner_lowercase>/<имя>:<тег>
Имена: 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-<full_commit>.
Пример:
docker pull git.shts.su/myuser/evobgp-api:v1.2.3
Подробности — docs/quickstart.md, deploy/docker/README.md.