diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 77fc2493..d1764708 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -64,7 +64,9 @@ jobs: - name: Build pipeleek binary for e2e tests (Windows) if: runner.os == 'Windows' - run: go build -o pipeleek.exe ./cmd/pipeleek + env: + CGO_ENABLED: 0 + run: go build -trimpath -ldflags="-s -w" -o pipeleek.exe ./cmd/pipeleek - name: Run e2e tests (Linux) if: runner.os == 'Linux' diff --git a/Makefile b/Makefile index 385bf1a9..7bb0439a 100644 --- a/Makefile +++ b/Makefile @@ -21,35 +21,38 @@ help: @echo " make serve-docs - Generate and serve CLI documentation" @echo " make clean - Remove built artifacts" +# Build flags to reduce binary size (strip symbols, debug info, and file paths) +GO_BUILD_FLAGS = -trimpath -ldflags="-s -w" + # Build the main pipeleek binary build: @echo "Building pipeleek..." - CGO_ENABLED=0 go build -o pipeleek ./cmd/pipeleek + CGO_ENABLED=0 go build $(GO_BUILD_FLAGS) -o pipeleek ./cmd/pipeleek # Build GitLab-specific binary build-gitlab: @echo "Building pipeleek-gitlab..." - CGO_ENABLED=0 go build -o pipeleek-gitlab ./cmd/pipeleek-gitlab + CGO_ENABLED=0 go build $(GO_BUILD_FLAGS) -o pipeleek-gitlab ./cmd/pipeleek-gitlab # Build GitHub-specific binary build-github: @echo "Building pipeleek-github..." - CGO_ENABLED=0 go build -o pipeleek-github ./cmd/pipeleek-github + CGO_ENABLED=0 go build $(GO_BUILD_FLAGS) -o pipeleek-github ./cmd/pipeleek-github # Build BitBucket-specific binary build-bitbucket: @echo "Building pipeleek-bitbucket..." - CGO_ENABLED=0 go build -o pipeleek-bitbucket ./cmd/pipeleek-bitbucket + CGO_ENABLED=0 go build $(GO_BUILD_FLAGS) -o pipeleek-bitbucket ./cmd/pipeleek-bitbucket # Build Azure DevOps-specific binary build-devops: @echo "Building pipeleek-devops..." - CGO_ENABLED=0 go build -o pipeleek-devops ./cmd/pipeleek-devops + CGO_ENABLED=0 go build $(GO_BUILD_FLAGS) -o pipeleek-devops ./cmd/pipeleek-devops # Build Gitea-specific binary build-gitea: @echo "Building pipeleek-gitea..." - CGO_ENABLED=0 go build -o pipeleek-gitea ./cmd/pipeleek-gitea + CGO_ENABLED=0 go build $(GO_BUILD_FLAGS) -o pipeleek-gitea ./cmd/pipeleek-gitea # Build all binaries build-all: build build-gitlab build-github build-bitbucket build-devops build-gitea diff --git a/tests/e2e/internal/testutil/testutil.go b/tests/e2e/internal/testutil/testutil.go index bd06fdcf..68e84b67 100644 --- a/tests/e2e/internal/testutil/testutil.go +++ b/tests/e2e/internal/testutil/testutil.go @@ -159,9 +159,20 @@ var ( ) func buildBinary(moduleDir, outputPath string) error { - cmd := exec.Command("go", "build", "-o", outputPath, "./cmd/pipeleek") + cmd := exec.Command("go", "build", "-trimpath", "-ldflags=-s -w", "-o", outputPath, "./cmd/pipeleek") cmd.Dir = moduleDir - cmd.Env = os.Environ() + + // Ensure CGO is disabled so the e2e-built binary matches Makefile/CI builds. + env := os.Environ() + filteredEnv := make([]string, 0, len(env)+1) + for _, kv := range env { + if strings.HasPrefix(kv, "CGO_ENABLED=") { + continue + } + filteredEnv = append(filteredEnv, kv) + } + filteredEnv = append(filteredEnv, "CGO_ENABLED=0") + cmd.Env = filteredEnv return cmd.Run() }