Fix CGO_ENABLED in release build; remove unused goreleaser config#639
Merged
Conversation
The release workflow built binaries without CGO_ENABLED=0, causing the Linux binary to be dynamically linked against the Ubuntu CI runner's glibc (2.32/2.34). The resulting binary fails on RHEL 8 (glibc 2.28) with 'version GLIBC_2.34 not found'. - Set CGO_ENABLED=0 on the go build invocation so all release binaries are statically linked, consistent with what the (now-unused) goreleaser config was doing. - Add -trimpath to strip local build paths from the binary, matching the goreleaser config behaviour. - Remove .goreleaser.local.yml and .goreleaser.release.yml — goreleaser is not referenced in the Makefile or any workflow and has not been used since the release workflow was rewritten. Fixes #638
There was a problem hiding this comment.
Pull request overview
Updates the release pipeline to produce Linux-compatible Go binaries (avoiding dynamic glibc linkage issues like GLIBC_2.34 not found) by aligning the hand-rolled GitHub Actions build with the prior goreleaser behavior, and removes now-unused goreleaser configuration files.
Changes:
- Set
CGO_ENABLED=0in the release workflow build loop to prevent cgo-based dynamic glibc coupling (especially impacting Linux releases). - Add
-trimpathto the releasego buildinvocation to match prior goreleaser output characteristics. - Remove
.goreleaser.local.ymland.goreleaser.release.ymlsince they are no longer referenced.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
.github/workflows/release.yml |
Ensures release builds use CGO_ENABLED=0 and -trimpath in the multi-platform build loop. |
.goreleaser.release.yml |
Removed unused goreleaser release configuration. |
.goreleaser.local.yml |
Removed unused goreleaser local configuration. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
nekwar
approved these changes
Jun 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Set
CGO_ENABLED=0in the release workflow build loop and remove two unused goreleaser config files.Why
The v1.5.16 release binary is dynamically linked against the Ubuntu CI runner's glibc (2.32/2.34). On RHEL 8 (glibc 2.28) the binary fails to run with
version 'GLIBC_2.34' not found. Goreleaser — which was correctly settingCGO_ENABLED=0— is no longer used; the release workflow's hand-rolled build loop was missing the flag.How
CGO_ENABLED=0to thego buildinvocation in.github/workflows/release.yml— eliminates cgo dependency, producing a fully static Linux binary with no glibc coupling. On macOS and Windows the binary still links against the OS's standard system libraries, which is normal and expected on those platforms.-trimpathto strip local build paths from the binary, matching prior goreleaser behaviour..goreleaser.local.ymland.goreleaser.release.yml— not referenced in the Makefile or any workflow since the release workflow was rewritten.Testing
ldd launchpad_linux_amd64_*should reportnot a dynamic executable;file launchpad_linux_amd64_*should showstatically linked.Links
Checklist
Written by AI: claude-sonnet-4-5