From c99bf28eecbf738ada7620621babed1faf6c8a62 Mon Sep 17 00:00:00 2001 From: Sebastian Spaink <3441183+sspaink@users.noreply.github.com> Date: Mon, 5 May 2025 12:03:44 -0500 Subject: [PATCH] runtime: don't override user set commit and timestamp (#7549) Signed-off-by: sspaink --- docs/content/extensions.md | 8 +++++++- v1/version/version.go | 20 +++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/docs/content/extensions.md b/docs/content/extensions.md index cd6d85d985..aa059d493f 100644 --- a/docs/content/extensions.md +++ b/docs/content/extensions.md @@ -382,7 +382,13 @@ set at build-time: These values can be set on the command-line when building OPA from source: ``` -go build -o opa++ -ldflags "-X github.com/open-policy-agent/opa/version.Version=MY_VERSION" main.go + go build \ + -ldflags=" \ + -X github.com/open-policy-agent/opa/v1/version.Version=MY_VERSION\ + -X github.com/open-policy-agent/opa/v1/version.Vcs=MY_COMMIT_HASH \ + -X github.com/open-policy-agent/opa/v1/version.Hostname=MY_HOSTNAME \ + -X github.com/open-policy-agent/opa/v1/version.Timestamp=MY_TIMESTAMP" \ + -o opa++ ``` ## Appendix diff --git a/v1/version/version.go b/v1/version/version.go index 9529c85efe..3b013f3771 100644 --- a/v1/version/version.go +++ b/v1/version/version.go @@ -31,18 +31,28 @@ func init() { if !ok { return } - dirty := false + var dirty bool + var binTimestamp, binVcs string + for _, s := range bi.Settings { switch s.Key { case "vcs.time": - Timestamp = s.Value + binTimestamp = s.Value case "vcs.revision": - Vcs = s.Value + binVcs = s.Value case "vcs.modified": dirty = s.Value == "true" } } - if dirty { - Vcs += "-dirty" + + if Timestamp == "" { + Timestamp = binTimestamp + } + + if Vcs == "" { + Vcs = binVcs + if dirty { + Vcs += "-dirty" + } } }