19
14

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-11-24

以前の記事(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

19
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
14