mirror of https://github.com/mongodb/mongo
63 lines
1.8 KiB
Python
63 lines
1.8 KiB
Python
import os.path
|
|
import re
|
|
import subprocess
|
|
import sys
|
|
|
|
import structlog
|
|
import typer
|
|
from typing_extensions import Annotated
|
|
|
|
from buildscripts.ciconfig.evergreen import find_evergreen_binary
|
|
|
|
LOGGER = structlog.get_logger(__name__)
|
|
|
|
DEFAULT_LOCAL_EVG_AUTH_CONFIG = os.path.expanduser("~/.evergreen.yml")
|
|
|
|
DEFAULT_EVG_PROJECT_NAME = "mongodb-mongo-master"
|
|
DEFAULT_EVG_NIGHTLY_PROJECT_NAME = "mongodb-mongo-master-nightly"
|
|
DEFAULT_EVG_NIGHTLY_PROJECT_CONFIG = "etc/evergreen_nightly.yml"
|
|
|
|
ALLOWABLE_EVG_VALIDATE_MESSAGE_REGEXES = [
|
|
re.compile(r".*buildvariant .+ has unmatched selector: .+"),
|
|
re.compile(r".*buildvariant .+ has unmatched criteria: .+"),
|
|
]
|
|
ALLOWABLE_IF_NOT_IN_ALL_PROJECTS_EVG_VALIDATE_MESSAGE_REGEXES = [
|
|
re.compile(r".*task .+ defined but not used by any variants; consider using or disabling.*"),
|
|
]
|
|
|
|
HORIZONTAL_LINE = "-" * 100
|
|
|
|
|
|
def main(
|
|
evg_project_name: Annotated[
|
|
str, typer.Option(help="Evergreen project name")
|
|
] = DEFAULT_EVG_PROJECT_NAME,
|
|
evg_auth_config: Annotated[
|
|
str, typer.Option(help="Evergreen auth config file")
|
|
] = DEFAULT_LOCAL_EVG_AUTH_CONFIG,
|
|
):
|
|
evg_project_config_map = {evg_project_name: DEFAULT_EVG_NIGHTLY_PROJECT_CONFIG}
|
|
if evg_project_name == DEFAULT_EVG_PROJECT_NAME:
|
|
evg_project_config_map = {
|
|
DEFAULT_EVG_NIGHTLY_PROJECT_NAME: DEFAULT_EVG_NIGHTLY_PROJECT_CONFIG,
|
|
}
|
|
|
|
evergreen_bin = find_evergreen_binary("evergreen")
|
|
for _, project_config in evg_project_config_map.items():
|
|
cmd = [
|
|
evergreen_bin,
|
|
"--config",
|
|
evg_auth_config,
|
|
"evaluate",
|
|
"--path",
|
|
project_config,
|
|
]
|
|
LOGGER.info(f"Running command: {cmd}")
|
|
subprocess.run(cmd, capture_output=True, text=True, check=True)
|
|
|
|
sys.exit(0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
typer.run(main)
|