fix(v0.5.1): force CGO_ENABLED=0 in cross-build targets

A native Linux build of build-linux defaulted to CGO_ENABLED=1 and
produced a glibc-linked binary, which would not run in minimal
containers (Alpine, distroless, scratch). The Windows cross-compile
was already pure-Go because Go disables cgo when no host C toolchain
is available; making CGO_ENABLED=0 explicit keeps both targets
statically linked regardless of build host.

Verified on WSL: file reports "statically linked", ldd reports
"not a dynamic executable".
This commit is contained in:
2026-05-07 19:22:54 -04:00
parent 7a7b2490c2
commit 103307218e
+8 -4
View File
@@ -10,15 +10,19 @@ default:
build:
go build -o ctask.exe .
# Cross-compile a Linux amd64 binary into dist/
# Cross-compile a Linux amd64 binary into dist/. CGO_ENABLED=0 forces a
# pure-Go static link so the binary works in minimal containers (Alpine,
# distroless, scratch). Without this, native Linux builds default to
# CGO_ENABLED=1 and link against the host glibc.
build-linux:
mkdir -p dist
GOOS=linux GOARCH=amd64 go build -o dist/ctask-linux-amd64 ./
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o dist/ctask-linux-amd64 ./
# Cross-compile a Windows amd64 binary into dist/
# Cross-compile a Windows amd64 binary into dist/. CGO_ENABLED=0 keeps
# the artifact pure Go, matching the spec's "no cgo" rule.
build-windows:
mkdir -p dist
GOOS=windows GOARCH=amd64 go build -o dist/ctask-windows-amd64.exe ./
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o dist/ctask-windows-amd64.exe ./
# Build both Windows and Linux artifacts into dist/
build-all: build-windows build-linux