Go言語で作成したCLIツールをリリースする1

この記事でわかること

  1. Go言語で作成したアプリケーションへのversion情報の埋め込み方法
  2. Go言語で作成したアプリケーションのバイナリをGitHubで配布する方法

1. Go言語で作成したアプリケーションののversion情報の埋め込み方法

Golangでビルド時にバージョン情報を埋め込む(2019.03) - Qiita

build時に以下のようにldfalgsで埋め込む方法が基本的な方法らしい

go build -ldflags "-X main.version=v1.0.0"

このあとの項目で書きますがgoreleaserの設定ファイル内にこのldflags設定を記述して使うのが通常のようでした

2. Go言語で作成したアプリケーションのバイナリをGitHubで配布する方法

現時点でGo言語で開発したアプリケーションを様々なOS向けに配布するデファクトな方法はGoReleaserというリリース自動化ツールを使用した方法です.
GoReleaserの基本的な使用方法は以下参照. goreleaser.com

前述したversionの埋め込みは以下のように.goreleaser.ymlのbuild設定に{{.Version}}を設定します

builds:
  - main: .
    binary: diq
    ldflags:
      - -X github.com/litencatt/diq/version.Version={{.Version}}

.Versionの仕様

Name Templates - GoReleaser f:id:litencatt:20210215224240p:plain
上記のようにリリース済みのversionからvを除いたものが設定される作りとなっているため

git tag v0.1.1
git push origin v0.1.1

など事前に実行してGitHub上でv0.1.1がリリースされた状態であればgoreleaser実行時に.Version=v0.1.1が設定されることになる