Help us understand the problem. What is going on with this article?

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

ynozue
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした