Skip to content

Release pipeline only builds linux/amd64 — no macOS, Windows, or arm64 #31

Description

@dolph

Summary

.github/workflows/release.yml builds a single artifact per release:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
  go build -trimpath -ldflags="-s -w" \
  -o find-replace-linux-amd64 .

Published releases (e.g., v1.5.3) attach find-replace-linux-amd64 only. macOS users (intel + arm), Windows users, and Linux/arm64 users (now the default on AWS Graviton, GitHub-hosted Linux arm runners, Raspberry Pi, etc.) have no binary to install — they must build from source.

The tool's stdlib usage is essentially portable; the only platform-specific concern is the future os.Chown/setuid handling in issues #17/#18, which can be gated with chown_unix.go + chown_windows.go build tags (already attempted on the audit branch).

Impact (Cross-platform: Medium)

  • Excludes a meaningful fraction of the user base from a one-line install.
  • README's "fast find & replace shell command" reads like a portable utility, but the release artifacts don't match.

Suggested Fix

Replace the single build step with a matrix:

strategy:
  matrix:
    include:
      - { goos: linux,   goarch: amd64 }
      - { goos: linux,   goarch: arm64 }
      - { goos: darwin,  goarch: amd64 }
      - { goos: darwin,  goarch: arm64 }
      - { goos: windows, goarch: amd64, ext: ".exe" }

For each, build find-replace-${goos}-${goarch}${ext} and attach all to the GitHub Release.

Also emit a SHA256SUMS file alongside the artifacts (sha256sum find-replace-* > SHA256SUMS) so users can verify downloads.

Files

  • .github/workflows/release.yml:121-159

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions