地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【Go】ビルド時に情報を埋め込む

goでビルド時に動的に値を入れてバイナリを生成するやり方です。ビルドの引数に -ldflags "-X main.version=バージョン" をつけることで実現できます。

package main

var version string

func main() {
    println("version: " + version)
}

makeでビルド時に動的にtagを取得して埋め込むなら以下。CIとか通った段階でなんらかのサービスへのデプロイするみたいな場合でもこれ用意しておけば手間がかからずにバージョンを埋め込める。

TAG := $(shell git rev-parse HEAD)

build:
   @echo $(TAG)
  go build -ldflags "-X main.version=$(TAG)" ./app.go