Added public HTTPS endpoints for firewall installation and enrollment scripts, allowing access without API keys. Updated the URL handling in the firewall code to ensure all suggested control plane URLs are served over HTTPS. Enhanced documentation to reflect the new public endpoints and their usage. Updated tests to verify the correct behavior of the new URL handling logic.
Docker-образы EvoBGP
CI (Gitea Actions)
Сборка образов — docker buildx bake (deploy/docker/docker-bake.hcl), не отдельные docker build.
Publish: push в main после quality gates — job release в .gitea/workflows/ci.yaml: semantic-release + bake с VERSION из релиза.
Локально BuildKit также кэширует /go/pkg/mod и ~/.cache/go-build через RUN --mount=type=cache.
| Было | Стало |
|---|---|
8× go mod download + 8× go build (разные BIN) |
1× download + 1× компиляция всех cmd/* |
| 2× сборка BIRD из исходников (api, all) | 1× stage birdc, копируется в runtime |
2× npm ci (web, web-all) |
1× web-deps + 1× web-build + два nginx-образа (общий артефакт) |
| 8 runner'ов с checkout/login | 1 job docker-go, 1 job docker-web |
Кэш registry (переменные bake):
git.shts.su/<owner>/evobgp-buildcache:go-buildcache— запись только из targetgo-build-allgit.shts.su/<owner>/evobgp-buildcache:web-buildcache— запись только из targetweb-build
Остальные bake-target’ы только cache-from (чтение). Параллельный cache-to в один ref ломает manifest в registry (content descriptor … not found).
Локально BuildKit также кэширует /go/pkg/mod и ~/.cache/go-build через RUN --mount=type=cache.
Если CI падает на «not found» после смены схемы кэша — один раз удалите теги evobgp-buildcache:go-buildcache и :web-buildcache в registry и пересоберите.
Локальная сборка
Из корня репозитория:
cd deploy/docker
export REGISTRY=git.shts.su/<owner>
export IMAGE_TAG=latest
export SHORT_SHA=$(git rev-parse --short HEAD)
export VERSION=dev
export BUILD_TIME=
sh write-bake-override.sh
docker buildx bake --allow=fs.read=../.. -f docker-bake.hcl -f docker-bake.override.hcl go-images
docker buildx bake --allow=fs.read=../.. -f docker-bake.hcl -f docker-bake.override.hcl web-images
В docker-bake.hcl: context = "../.." (корень репо), dockerfile = "deploy/docker/…" (путь от корня репо). CI: write-bake-override.sh + --allow=fs.read=$GITHUB_WORKSPACE в .gitea/workflows/ci.yaml.
Один образ (legacy):
docker build -f deploy/docker/gobinary/Dockerfile \
--target build-all \
--build-arg BIN=evobgp-api \
-t evobgp-api:local .
Runtime-образы в bake ожидают stage build-all (через bake contexts), не отдельный --build-arg BIN на старый target build.