SERVER-108552 dynamically set mongo version (#39465)

GitOrigin-RevId: c24e0e2bc0b55d2be31a74cfd9f389d7e8dcbebd
This commit is contained in:
Daniel Moody 2025-07-31 14:04:27 -05:00 committed by MongoDB Bot
parent caa07aac4e
commit 50e4a9ccdb
6 changed files with 42 additions and 3 deletions

View File

@ -513,9 +513,6 @@ common:fission --remote_download_regex=.*\.dwo$
# Avoid failing builds when BES metadata fails to upload.
common --bes_upload_mode=fully_async
# Default Mongo Version if a version is not specified.
common --define=MONGO_VERSION=8.2.0-alpha
# Default distmod if not specified.
common --define=MONGO_DISTMOD=""
@ -531,6 +528,9 @@ try-import %workspace%/.bazelrc.evergreen
# local default dev settings
try-import %workspace%/.bazelrc.common_bes
# local default dev settings
try-import %workspace%/.bazelrc.mongo_version
# local git version info
try-import %workspace%/.bazelrc.git

1
.gitignore vendored
View File

@ -291,6 +291,7 @@ buildozer
.bazelrc.gitinfo
.bazelrc.workstation
.bazelrc.common_bes
.bazelrc.mongo_version
.bazelrc.compiledb
.bazelrc.sync
.compiledb

View File

@ -10,6 +10,7 @@ py_library(
"install_modules.py",
"lint.py",
"plus_interface.py",
"set_mongo_version.py",
"wrapper_debug.py",
"wrapper_hook.py",
],

View File

@ -11,6 +11,8 @@ import sys
REPO_ROOT = pathlib.Path(__file__).parent.parent.parent
sys.path.append(str(REPO_ROOT))
from bazel.wrapper_hook.set_mongo_version import write_mongo_version_bazelrc
def run_pty_command(cmd):
stdout = None
@ -43,6 +45,9 @@ def run_pty_command(cmd):
def generate_compiledb(bazel_bin, persistent_compdb, enterprise):
# compiledb ignores command line args so just make a version rc file in anycase
write_mongo_version_bazelrc([])
if persistent_compdb:
info_proc = subprocess.run(
[bazel_bin, "info", "output_base"], capture_output=True, text=True

View File

@ -0,0 +1,29 @@
import hashlib
import os
import pathlib
import subprocess
def write_mongo_version_bazelrc(args):
# quick return don't waste time if set on command line
if any(["MONGO_VERSION" in arg for arg in args]):
return
repo_root = pathlib.Path(os.path.abspath(__file__)).parent.parent.parent
version_file = os.path.join(repo_root, ".bazelrc.mongo_version")
existing_hash = ""
if os.path.exists(version_file):
with open(version_file, encoding="utf-8") as f:
existing_hash = hashlib.md5(f.read().encode()).hexdigest()
proc = subprocess.run(["git", "describe", "--abbrev=0"], capture_output=True, text=True)
bazelrc_contents = f"""
common --define=MONGO_VERSION={proc.stdout.strip()[1:]}
"""
current_hash = hashlib.md5(bazelrc_contents.encode()).hexdigest()
if existing_hash != current_hash:
with open(version_file, "w", encoding="utf-8") as f:
f.write(bazelrc_contents)

View File

@ -22,6 +22,7 @@ def main():
from bazel.wrapper_hook.engflow_check import engflow_auth
from bazel.wrapper_hook.generate_common_bes_bazelrc import write_workstation_bazelrc
from bazel.wrapper_hook.plus_interface import check_bazel_command_type, test_runner_interface
from bazel.wrapper_hook.set_mongo_version import write_mongo_version_bazelrc
# This is used to autogenerate a BUILD.bazel that creates
# Filegroups for select tags - used to group targets for installing
@ -42,6 +43,8 @@ def main():
write_workstation_bazelrc(args)
write_mongo_version_bazelrc(args)
args = test_runner_interface(
sys.argv[1:],
autocomplete_query=os.environ.get("MONGO_AUTOCOMPLETE_QUERY") == "1",