CI / changes (push) Successful in 8s
CI / openapi (push) Has been skipped
CI / go (push) Has been skipped
CI / docker-web (push) Failing after 16s
CI / docker-bird (push) Has been skipped
CI / bird2 (push) Successful in 22s
CI / docker-go (push) Failing after 51s
- Added a new target "web-build" to streamline the build process for web artifacts. - Updated "evobgp-web" and "evobgp-web-all" targets to utilize the new "web-build" context. - Modified Dockerfile to reflect changes in the build stages and context for web artifacts. - Revised README to clarify the new build process and dependencies.
47 lines
2.0 KiB
Markdown
47 lines
2.0 KiB
Markdown
# Docker-образы EvoBGP
|
||
|
||
## CI (Gitea Actions)
|
||
|
||
Сборка образов — **`docker buildx bake`** (`deploy/docker/docker-bake.hcl`), а не матрица из восьми отдельных `docker build`.
|
||
|
||
| Было | Стало |
|
||
|------|--------|
|
||
| 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`
|
||
- `git.shts.su/<owner>/evobgp-buildcache:web-buildcache`
|
||
|
||
Локально BuildKit также кэширует `/go/pkg/mod` и `~/.cache/go-build` через `RUN --mount=type=cache`.
|
||
|
||
## Локальная сборка
|
||
|
||
Из корня репозитория:
|
||
|
||
```bash
|
||
cd deploy/docker
|
||
export REGISTRY=git.shts.su/<owner>
|
||
export IMAGE_TAG=latest
|
||
export SHORT_SHA=$(git rev-parse --short HEAD)
|
||
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):
|
||
|
||
```bash
|
||
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`.
|