Goツールの超絶お手軽リリース

1 min read読了の目安(約1400字

GoのCLIツールを楽にリリースしたい

自動で

  • PRをマージするたびにDraft Releaseのリリースノートに変更内容を追記
  • ReleaseをPublishしたらバイナリをReleaseに添付
  • brewでもインストールできる場合はそのバージョンも最新に更新

したい!

今回紹介するお手軽リリースフローは自分がメンテしているGoツールでも実際に利用しています。

https://github.com/rinchsan/gosimports

このツールについては以前にZennでも紹介記事を書いたので、是非そちらも読んでもらえると嬉しいです。

https://zenn.dev/rinchsan/articles/3605006a40b77019bff0

作り方

release-drafterでDraft Releaseを自動作成

https://github.com/release-drafter/release-drafter
  • こんな感じ でGitHub Actionsのワークフローを書いておけば、PRをマージしたときに自動でDraft ReleaseのリリースノートにPRのタイトルやAuthorなどを追記してくれます。
  • Draft Releaseが無い場合は新規作成もちゃんとしてくれます。
  • Semantic versionもいい感じに決めてくれます。
  • こんな感じ の設定ファイルも必要です。

goreleaserでバイナリを配布

https://github.com/goreleaser/goreleaser
  • こんな感じ でGitHub Actionsのワークフローを書いておけば、release-drafterが作成したDraft ReleaseをPublishしたときに、自動でバイナリをビルドしてReleaseに添付してくれます。
  • 別途 こんな感じhomebrew-tap という名前のリポジトリを作成し、brewに関する設定も入れておけば、自動でbrewでインストールできるバージョンも最新にしてくれます。
  • gosimports で使っている設定ファイルは こんな感じ です。

あとはマージしてPublishするだけ

このように雑にyamlファイルをいくつか用意するだけでGoで書いたCLIツールのバイナリを楽に配布することができます。
ありがたいですね。