Goreleaser에서 M1, Windows ARM64 지원하기

goreleaser의 각각 v0.157.0, v0.175.0 버전에서 M1 macbook, Windows ARM 64 지원이 추가되었습니다. 저도 제가 개발하는 도구에선 M1 지원이 약간 늦은 느낌이 있긴한데요. 관련해서 주의해야할 점들 정리해 둡니다.

Apple M1

Apple M1은 darwin/arm64로 표기됩니다. 이는 go tool로 확인할 수 있는데요.

go tool dist list | grep darwin
darwin/amd64
darwin/arm64

go1.16 버전 이상부터는 darwin/arm64로 빌드가 가능해집니다. 그래서 goreleaser로도 m1 build가 가능하며, 이 때 goreleaer가 동작하는 머신은 당연히 go1.16 이상의 버전 설치가 필요합니다.

yaml 파일에서 goarch에 arm64가 추가되어 있다면 darwin/arm64로 빌드가 가능합니다.

goarch:
      - amd64
      - 386
      - arm
      - arm64

다만 이전부터 다른 os의 arm을 지원하셨다면 아마 ignore 패턴에 darwin/arm64가 포함되어 있을텐데요, 이를 제거해주셔야 정상적으로 적용됩니다.

...
      • building                  binary=/home/devi/tools/dalfox/dist/dalfox_darwin_amd64/dalfox
      • building                  binary=/home/devi/tools/dalfox/dist/dalfox_freebsd_arm_6/dalfox
      • building                  binary=/home/devi/tools/dalfox/dist/dalfox_freebsd_arm64/dalfox
      • building                  binary=/home/devi/tools/dalfox/dist/dalfox_darwin_arm64/dalfox
...

Windows ARM64

go1.17부턴 windows의 arm64도 빌드가 가능합니다.

go tool dist list | grep windows
windows/386
windows/amd64
windows/arm
windows/arm64

M1과 동일하게 ignore 패턴에 windows/arm64가 있다면 제거해주시면 잘 빌드됩니다 :D

제보자도 잘 된다고 하네요! https://github.com/hahwul/dalfox/issues/285#issuecomment-928771010

References