Skip to content

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

@dolph

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

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions