go build の成果物のバージョン情報を取得する
go buildでビルドしたバイナリのバージョン情報を取得するには、runtime/debugパッケージのReadBuildInfo()関数を使用する。
info, ok = debug.ReadBuildInfo()でBuildInfoオブジェクトを取得し、info.Main.Versionでバージョン情報を参照できる。
package main
import (
"fmt"
"runtime/debug"
)
func main() {
if info, ok := debug.ReadBuildInfo(); ok {
fmt.Printf("Version: %s\n", info.Main.Version)
} else {
fmt.Println("No build info available")
}
}
バージョン情報の確認
上記のコードをversion-test.goとして保存し、以下のコマンドでビルドし実行する。
go build -o version-test version-test.go
./version-test
Version: (devel)
Gitで管理していない場合、バージョン情報は(devel)となる。
Gitでタグを付けたバージョン情報の反映
gitでタグをつけるとバージョンが付く。
git init
git commit --allow-empty -m "Initial commit"
git tag v1.0.0
再度ビルドし実行する。
go build -o version-test version-test.go
./version-test
Version: v1.0.0
開発中のバージョン情報
タグのついたバージョンからコミットが進んでいる場合、バージョン情報にビルド日時と現在のコミットIDが付与される。
echo "// dummy change" >> version-test.go
git add version-test.go
git commit -m "Update version-test.go"
go build -o version-test version-test.go
./version-test
Version: v1.0.0-0.20260101055640-bddc39b7927b
また、コミットされていない変更がある場合はさらに+dirtyが付与される。
echo "// another change" >> version-test.go
go build -o version-test version-test.go
./version-test
Version: v1.0.0-0.20260101055640-bddc39b7927b+dirty
\第一線のプログラマーの行動原理を学べる!/
