From b67ff9059bfad6975ff7efa1b0d100352ea09a09 Mon Sep 17 00:00:00 2001 From: Neil-Jocelyn Schark <neil.schark@h-da.de> Date: Thu, 27 Jun 2024 14:08:44 +0000 Subject: [PATCH] Build statically linked binaries wherever possible See merge request danet/gosdn!932 --- Makefile | 2 +- applications/venv-manager/venv-manager.Dockerfile | 13 +++---------- controller/Dockerfile.debug | 2 +- csbi/Dockerfile.exec | 2 +- csbi/resources/Dockerfile | 2 +- makefiles/build/Makefile | 6 +++--- 6 files changed, 10 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index cbd58775a..0a27ad738 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ GOBIN := $(GOSDN_PRG) SCRIPTS_DIR := /scripts MAKEFILE_SUBDIR := ./makefiles -GOCMD=go +GOCMD=CGO_ENABLED=0 go GOBUILD=$(GOCMD) build GOCLEAN=$(GOCMD) clean -cache -fuzzcache -testcache -modcache BUILD_ARTIFACTS_PATH=artifacts diff --git a/applications/venv-manager/venv-manager.Dockerfile b/applications/venv-manager/venv-manager.Dockerfile index 30a844ed2..33df4b0a7 100644 --- a/applications/venv-manager/venv-manager.Dockerfile +++ b/applications/venv-manager/venv-manager.Dockerfile @@ -6,18 +6,11 @@ FROM ${GITLAB_PROXY}golang:$GOLANG_VERSION-bookworm AS builder WORKDIR /gosdn -COPY go.* ./ -RUN go mod download - -COPY ./models/generated/openconfig ./models/generated/openconfig -COPY ./api ./api -COPY ./controller ./controller -COPY applications/venv-manager/ applications/venv-manager/ - -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o venv-manager applications/venv-manager/main.go +COPY . . +RUN make build-venv-manager FROM ${GITLAB_PROXY}ubuntu:22.04 -COPY --from=builder /gosdn/venv-manager /venv-manager +COPY --from=builder /gosdn/artifacts/venv-manager /venv-manager ENTRYPOINT ["/venv-manager"] diff --git a/controller/Dockerfile.debug b/controller/Dockerfile.debug index 605fb0925..1560b16ea 100644 --- a/controller/Dockerfile.debug +++ b/controller/Dockerfile.debug @@ -12,7 +12,7 @@ COPY go.sum . RUN go mod download COPY . . RUN --mount=type=cache,target=/root/.cache/go-build \ -GOOS=linux go build -o gosdn ./cmd/gosdn +GOOS=linux CGO_ENABLED=0 go build -o gosdn ./cmd/gosdn # Get Delve from a GOPATH not from a Go Modules project WORKDIR /go/src/ diff --git a/csbi/Dockerfile.exec b/csbi/Dockerfile.exec index c0b3f6fb3..f750a8792 100644 --- a/csbi/Dockerfile.exec +++ b/csbi/Dockerfile.exec @@ -11,7 +11,7 @@ RUN go mod download FROM installer as builder COPY . . RUN --mount=type=cache,target=/root/.cache/go-build \ -GOOS=linux go build -o executor ./cmd/executor/executor.go +GOOS=linux CGO_ENABLED=0 go build -o executor ./cmd/executor/executor.go FROM alpine COPY --from=builder /build/executor . diff --git a/csbi/resources/Dockerfile b/csbi/resources/Dockerfile index 169db470c..ace1399e4 100644 --- a/csbi/resources/Dockerfile +++ b/csbi/resources/Dockerfile @@ -11,7 +11,7 @@ COPY go.sum . FROM installer AS builder RUN go mod tidy COPY . . -RUN GOOS=linux go build -o csbi +RUN CGO_ENABLED=0 GOOS=linux go build -o csbi FROM alpine COPY --from=builder /src/csbi/csbi . diff --git a/makefiles/build/Makefile b/makefiles/build/Makefile index cf633e0c8..6ffa72f25 100644 --- a/makefiles/build/Makefile +++ b/makefiles/build/Makefile @@ -13,13 +13,13 @@ build-gosdn: pre $(GOBUILD) -trimpath -o $(BUILD_ARTIFACTS_PATH)/gosdn ./controller/cmd/gosdn build-gosdnc: pre - CGO_ENABLED=0 $(GOBUILD) -o $(BUILD_ARTIFACTS_PATH)/gosdnc ./cli/ + $(GOBUILD) -o $(BUILD_ARTIFACTS_PATH)/gosdnc ./cli/ build-orchestrator: pre - CGO_ENABLED=0 $(GOBUILD) -o $(BUILD_ARTIFACTS_PATH)/orchestrator ./csbi/cmd/csbi/ + $(GOBUILD) -o $(BUILD_ARTIFACTS_PATH)/orchestrator ./csbi/cmd/csbi/ build-plugin-registry: pre - CGO_ENABLED=0 $(GOBUILD) -o $(BUILD_ARTIFACTS_PATH)/plugin-registry ./plugin-registry/ + $(GOBUILD) -o $(BUILD_ARTIFACTS_PATH)/plugin-registry ./plugin-registry/ build-venv-manager: pre $(GOBUILD) -o $(BUILD_ARTIFACTS_PATH)/venv-manager ./applications/venv-manager -- GitLab