関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。よく忘れるのでここにメモメモ。。
アプリのヘルプ表示とかで、ビルドされたときのgitのリビジョンを表示したいときがあります。
Go 1.18 で、runtime/debug.BuildInfo
に BuildSetting
が追加されているので、そこから取得できます。
サンプル
package runtimes import ( "errors" "runtime/debug" "github.com/devlights/gomy/output" ) // DebugBuildInfo は、runtime/debug.ReadBuildInfo() のサンプルです. // // # REFERENCES // - https://pkg.go.dev/runtime/debug@go1.21.5#ReadBuildInfo // - https://pkg.go.dev/runtime/debug@go1.21.5#BuildSetting func DebugBuildInfo() error { // // ReadBuildInfo()は、ReadBuildInfo は、実行中のバイナリに埋め込まれたビルド情報を返す. // 中にビルド時のGoのバージョンや依存関係、VCSのリビジョンなどが設定されている. // info, ok := debug.ReadBuildInfo() if !ok { return errors.New("error: call debug.ReadBuildInfo()") } output.Stdoutl("[BuildInfo]", info) output.StdoutHr() output.Stdoutl("[Go Version]", info.GoVersion) output.Stdoutl("[Path]", info.Path) const revisionKey = "vcs.revision" for _, s := range info.Settings { if s.Key == revisionKey { output.Stdoutl("[revision]", s.Value) } } return nil }
実行すると以下のような結果になります。
$ task task: [build] go build . task: [run] ./try-golang -onetime ENTER EXAMPLE NAME: runtime_debug_buildinfo [Name] "runtime_debug_buildinfo" [BuildInfo] go go1.21.5 path github.com/devlights/try-golang mod github.com/devlights/try-golang (devel) dep github.com/devlights/gomy v0.6.0 h1:7BT8bSxr+ZeNkgEYNufuM2rSc6kIoN6g2FSZvrcT9zw= dep github.com/pelletier/go-toml/v2 v2.1.1 h1:LWAJwfNvjQZCFIDKWYQaM62NcYeYViCmWIwmOStowAI= dep github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= dep golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= dep golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb h1:c0vyKkb6yr3KR7jEfJaOSv4lG7xPkbN6r52aJz1d8a8= dep golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= dep golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= dep golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= dep golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= dep gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= build -buildmode=exe build -compiler=gc build CGO_ENABLED=1 build CGO_CFLAGS= build CGO_CPPFLAGS= build CGO_CXXFLAGS= build CGO_LDFLAGS= build GOARCH=amd64 build GOOS=linux build GOAMD64=v1 build vcs=git build vcs.revision=d11f13942220108e09f35d207f82c3ddd8d36e88 build vcs.time=2023-12-18T05:48:40Z build vcs.modified=false -------------------------------------------------- [Go Version] go1.21.5 [Path] github.com/devlights/try-golang [revision] d11f13942220108e09f35d207f82c3ddd8d36e88 [Elapsed] 153.14µs
参考情報
- https://pkg.go.dev/runtime/debug@go1.21.5#ReadBuildInfo
- https://pkg.go.dev/runtime/debug@go1.21.5#BuildSetting
Goのおすすめ書籍
上の書籍の日本語版が下です。
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。