From bf15628b759344c6fc7763795a405ba65b8be5d7 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Thu, 19 Sep 2024 12:40:00 -0700 Subject: [PATCH] [tailscale] runtime/debug: embed Tailscale toolchain git rev This is another take on #49 (which we stopped using?), and less intrusive, and also always on. This puts puts the the Tailscale Go toolchain's git rev in the binary, accessible as a new "tailscale.toolchain.rev" runtime/debug.BuildInfo Setting. Caller code will have to access it guarded by the "tailscale_go" build tag. Updates #49 Signed-off-by: Brad Fitzpatrick --- .github/workflows/build.yml | 2 ++ src/runtime/debug/mod.go | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4972a145ee388..58af9abf41f04 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,6 +41,8 @@ jobs: uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: ref: ${{ inputs.ref || github.ref }} + - name: set runtime/debug.tailscaleGitRev + run: sed -i "s/TAILSCALE_GIT_REV_TO_BE_REPLACED_AT_BUILD_TIME/${{ github.sha }}/" src/runtime/debug/mod.go - name: build run: cd src && ./make.bash env: diff --git a/src/runtime/debug/mod.go b/src/runtime/debug/mod.go index a4705605b859a..cbea7cd249ae7 100644 --- a/src/runtime/debug/mod.go +++ b/src/runtime/debug/mod.go @@ -11,6 +11,8 @@ import ( "strings" ) +const tailscaleGitRev = `TAILSCALE_GIT_REV_TO_BE_REPLACED_AT_BUILD_TIME` + // exported from runtime. func modinfo() string @@ -34,6 +36,13 @@ func ReadBuildInfo() (info *BuildInfo, ok bool) { // awkwardness from the user. bi.GoVersion = runtime.Version() + if len(tailscaleGitRev) > 0 && tailscaleGitRev[0] != 'T' { + bi.Settings = append(bi.Settings, BuildSetting{ + Key: "tailscale.toolchain.rev", + Value: tailscaleGitRev, + }) + } + return bi, true }