mirror of
https://github.com/netbirdio/netbird.git
synced 2026-07-16 19:49:56 +00:00
Introduce a self-contained, OIDC-free e2e harness that stands up NetBird in containers, so suites no longer depend on the hand-maintained Tilt stack or a real IdP. - harness brings up the combined server (management + signal + relay + STUN + embedded IdP) in a single container built from combined/Dockerfile.multistage, and mints an admin PAT through the unauthenticated /api/setup bootstrap (NB_SETUP_PAT_ENABLED). API access goes through the existing shared/management/client/rest typed client. - the image is built via the docker CLI (BuildKit) so the Dockerfile's cache mounts are honored; testcontainers then runs the tagged image. - everything is behind the `e2e` build tag so normal builds and unit tests never pull in testcontainers. Adds BuildKit cache mounts to combined/Dockerfile.multistage so source changes recompile incrementally rather than from scratch. Pillar 1 proven by TestCombinedBootstrap: server builds, boots, mints a PAT, and the PAT authenticates a real management API call.
30 lines
1.2 KiB
Docker
30 lines
1.2 KiB
Docker
FROM golang:1.25-bookworm AS builder
|
|
WORKDIR /app
|
|
|
|
# Install build dependencies
|
|
RUN apt-get update && apt-get install -y gcc libc6-dev git && rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY go.mod go.sum ./
|
|
RUN --mount=type=cache,target=/go/pkg/mod go mod download
|
|
|
|
COPY . .
|
|
|
|
# Build with version info from git (matching goreleaser ldflags).
|
|
# BuildKit cache mounts persist the module + build caches across image builds,
|
|
# so a source change recompiles incrementally instead of from scratch.
|
|
RUN --mount=type=cache,target=/go/pkg/mod \
|
|
--mount=type=cache,target=/root/.cache/go-build \
|
|
CGO_ENABLED=1 GOOS=linux go build \
|
|
-ldflags="-s -w \
|
|
-X github.com/netbirdio/netbird/version.version=$(git describe --tags --always --dirty 2>/dev/null || echo 'dev') \
|
|
-X main.commit=$(git rev-parse --short HEAD 2>/dev/null || echo 'unknown') \
|
|
-X main.date=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
|
|
-X main.builtBy=docker" \
|
|
-o netbird-server ./combined
|
|
|
|
FROM ubuntu:24.04
|
|
RUN apt update && apt install -y ca-certificates && rm -fr /var/cache/apt
|
|
ENTRYPOINT [ "/go/bin/netbird-server" ]
|
|
CMD ["--config", "/etc/netbird/config.yaml"]
|
|
COPY --from=builder /app/netbird-server /go/bin/netbird-server
|