Skip to content

heiwa4126/go-goreleaser1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gorelaser1

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.yamlnfpms: から コピペしてみる。

ローカルではあっさりできた。ちゃんとインストール・実行・アンインストールもできた。

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