Edited at

goreleaser を使って Github Releases へ簡単デプロイ #golang

More than 1 year has passed since last update.

以前の記事(Golang のバイナリにバージョンを埋め込む)で Git のタグとショートバージョンをバイナリに埋め込みましたが kyoh86 さんから goreleaser を教えてもらいましたので試してみます。


goreleaser とは

バイナリのクロスコンパイル(バージョンも埋め込める)と Github Releases へのデプロイを簡単にできちゃう便利ツールみたいです。

詳細は本家のサイトを参照してください。チュートリアルが充実しててわかりやすいです。

https://goreleaser.com


試してみる


goreleaser インストール

$ go get github.com/goreleaser/goreleaser


チュートリアルに従って設定ファイルを作成

main の go ファイルと binary の名前、ビルド対象の OS だけを指定します。


.goreleaser.yml

# .goreleaser.yml

# Build customization
builds:
- main: apichecker.go
binary: apichecker
goos:
- windows
- darwin
- linux
goarch:
- amd64


GitHub の Token を設定

一応、Access Token の取得方法について書いておきます。

わかってるよーって人はスキップしてください。


GitHub の Token を取得

GitHub の Settings を開いて、 Developer settings を選択します。

Kobito.WwwrUz.png


「Personal access tokens」 -> 「Generate new token」 から Token を作成します。

Kobito.VXYTGk.png

Kobito.bSqfg8.png


goreleaser 用の Token を発行

とりあえず、Token Description を適当に入力して、チュートリアル通り repo にチェックをつけます。

Kobito.OcDOby.png


発行された Token を設定

先ほど発行した Token を 「YOUR_TOKEN」に入力してください。

$ export GITHUB_TOKEN="YOUR_TOKEN"

※ チュートリアルだとなぜかバッククォートになっているので注意してください。


git のタグをつける

$ git tag v1.0.1

$ git push --tags


goreleaser 実行

$ goreleaser

• running goreleaser dev
• loading config file file=.goreleaser.yml
• SETTING DEFAULTS
• GETTING AND VALIDATING GIT STATE
• releasing v1.0.1, commit ce33f1ea8a290f6c8d5945359e14b4ae94da6786
• GENERATING CHANGELOG
• LOADING ENVIRONMENT VARIABLES
• CHECKING ./DIST
• BUILDING BINARIES
• building binary=dist/apichecker_1.0.1_windows_amd64/apichecker.exe
• building binary=dist/apichecker_1.0.1_darwin_amd64/apichecker
• building binary=dist/apichecker_1.0.1_linux_amd64/apichecker
• CREATING ARCHIVES
• creating archive=dist/apichecker_1.0.1_darwin_amd64.tar.gz
• creating archive=dist/apichecker_1.0.1_linux_amd64.tar.gz
• creating archive=dist/apichecker_1.0.1_windows_amd64.tar.gz
• new release artifact artifact=apichecker_1.0.1_windows_amd64.tar.gz
• new release artifact artifact=apichecker_1.0.1_linux_amd64.tar.gz
• new release artifact artifact=apichecker_1.0.1_darwin_amd64.tar.gz
• CREATING LINUX PACKAGES WITH FPM
• skipped reason=no output formats configured
• CREATING LINUX PACKAGES WITH SNAPCRAFT
• skipped reason=no summary nor description were provided
• CALCULATING CHECKSUMS
• checksumming file=apichecker_1.0.1_linux_amd64.tar.gz
• checksumming file=apichecker_1.0.1_darwin_amd64.tar.gz
• checksumming file=apichecker_1.0.1_windows_amd64.tar.gz
• new release artifact artifact=apichecker_1.0.1_checksums.txt
• CREATING DOCKER IMAGES
• skipped reason=docker section is not configured
• RELEASING TO GITHUB
• creating or updating release repo=ynozue/apichecker tag=v1.0.1
• release updated url=https://github.com/ynozue/apichecker/releases/tag/v1.0.1
• uploading to release file=dist/apichecker_1.0.1_checksums.txt name=apichecker_1.0.1_checksums.txt
• uploading to release file=dist/apichecker_1.0.1_darwin_amd64.tar.gz name=apichecker_1.0.1_darwin_amd64.tar.gz
• uploading to release file=dist/apichecker_1.0.1_windows_amd64.tar.gz name=apichecker_1.0.1_windows_amd64.tar.gz
• uploading to release file=dist/apichecker_1.0.1_linux_amd64.tar.gz name=apichecker_1.0.1_linux_amd64.tar.gz
• CREATING HOMEBREW FORMULA
• skipped reason=brew section is not configured
• SUCCESS!


確認

GitHub の Releases に v1.0.1 に対応したソースコードやバイナリがアップロードされたことが確認できました。

https://github.com/ynozue/apichecker/releases

Kobito.LHpum9.png

バイナリにバージョンも問題なく埋め込まれていることを確認できました。

$ apichecker -v

version( 1.0.1 )


Appendix