GoReleaserの練習
$ goreleaser -v
goreleaser version 1.12.3
commit: e27e6a9e8c66ec5d2bbcafb1c047068bcf250269
built at: 2022-10-20T12:30:56Z
built by: goreleaser
goos: linux
goarch: amd64
module version: v1.12.3, checksum: h1:sTJXdkGQO9eAP6pwEUazaD6ERJewZ7yzQexWEGPUVg4=
https://goreleaser.com
$ go version
go version go1.18.1 linux/amd64
Quick Start通りにやると動かない。
mkdir gorelaser1 ; cd gorelaser1
Quick Startにあるmain.goを作る。
go mod init main
goreleaser init
goreleaser --snapshot --rm-dist
# または (tar.gzは作ってくれない)
goreleaser build
error=couldn't guess project_name, please add it to your config
とエラーが出るので、
Project Name
にある通り、.goreleaser.yaml
の一番上のレベルに project_name を追加。
再び
goreleaser --snapshot --rm-dist
とりあえず./dist以下に tarballができた。
- 386いらない -> done
- Macもいらない -> done
- tar.gzよりzipがいい -> Windowsはzip, Linuxはtar.gzにした。
ここでいったんgitをinitial. goreleaserの作る.gitignoreは./distが入ってるだけなので、
curl -L -o .gitignore https://www.toptal.com/developers/gitignore/api/go,visualstudiocode,emacs
go build
した場合に備えて、最後に gorelease1
を追加。
...修正。ローカルで動かしてOKを確認。
次。 GitHubにpush。
Personal Access Tokens (Classic) でtoken。scopesはrepoだけでいいらしい。
git commit -am 'xxxx'
git push
git tag v0.0.0
git push --tags
export GITHUB_TOKEN=gggggggggggggggggggggggggggggggggggggggg
goreleaser check
goreleaser --rm-dist
releaseにLinux版とWindows版が追加された。 GitHub Actionsなくてもここまでできるのか。
Goバイナリのサイズを小さくしてみる。
- upx - GitHub actionsだとインストールがいるかな...
- ldflagsの-s -w と -trimpath
GitHub Actionsつけてみる。 おおむね GitHub Actions - GoReleaser のままで行けると思う。
Dependencies file is not found in Supported file pattern: go.sum
とか言われて死ぬ。このプロジェクト依存ないんでgo.sumないんですけど...
しょうがないので空ファイルつくる。依存あるならgo mod tidy
# いまつけたtagを消して
git --no-pager tag
git tag -d v0.0.2
git --no-pager tag
git ls-remote --tags
git push origin :refs/tags/v0.0.2
git ls-remote --tags
# 空のgo.sumつくって
touch go.sum
# もういちどpush
git add --all
git commit -am 'add empty go.sum for GitHub Actions'
git push
git tag v0.0.2
git push --tags
おお、うまくごまかせた。upxもちゃんと動いた。
debとrpmも作ってみたいのだがパラメータ多すぎて目が回る。 Linux packages (via nFPM) - GoReleaser
goreleaser自体の .goreleaser.yaml の
nfpms:
から
コピペしてみる。
ローカルではあっさりできた。ちゃんとインストール・実行・アンインストールもできた。
git commit -am 'add .rpm and .deb'
git push
git tag v0.0.3
git push --tags
おお出来た。あとはWindowsでMSIが出ればいいんだけど... Packaging and uploading MSI installer for Windows · Issue #1295 · goreleaser/goreleaser