Skip to content

Commit 017b91b

Browse files
committed
address feedback
1 parent e55021e commit 017b91b

File tree

2 files changed

+31
-20
lines changed

2 files changed

+31
-20
lines changed

.evergreen.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ tasks:
288288
- func: lint_repo
289289

290290
# Runs on every merge - detects release.json changes and releases appropriate images
291-
- name: release_on_merge
291+
- name: release_om_and_agents
292292
allowed_requesters: [ "patch" , "commit"]
293293
commands:
294294
- func: clone
@@ -301,7 +301,7 @@ tasks:
301301
working_dir: src/github.com/mongodb/mongodb-kubernetes
302302
binary: scripts/dev/run_python.sh
303303
args:
304-
- scripts/release/release_on_merge.py
304+
- scripts/release/release_om_and_agents.py
305305

306306
- name: migrate_all_agents
307307
# this enables us to run this variant manually to build all the agents for the new agent registry
@@ -754,7 +754,7 @@ task_groups:
754754
- e2e_sharded_cluster_scram_sha_256_switch_project
755755
- e2e_replica_set_scram_sha_1_switch_project
756756
- e2e_sharded_cluster_scram_sha_1_switch_project
757-
# TODO CLOUDP-349093 - Disabled these tests as they don't use the password secret, and project migrations aren't fully supported yet.
757+
# TODO CLOUDP-349093 - Disabled these tests as they don't use the password secret, and project migrations aren't fully supported yet.
758758
# e2e_sharded_cluster_x509_switch_project
759759
# e2e_replica_set_x509_switch_project
760760
# e2e_replica_set_ldap_switch_project
@@ -1969,11 +1969,11 @@ buildvariants:
19691969
- name: migrate_all_agents
19701970

19711971
# Runs on every merge to master and releases images auxiliary to the operator release like OM and the Agent
1972-
- name: release_on_merge
1973-
display_name: release_on_merge
1972+
- name: release_om_and_agents
1973+
display_name: release_om_and_agents
19741974
allowed_requesters: [ "patch" , "commit"]
19751975
run_on:
19761976
- release-ubuntu2404-small
19771977
patchable: false # Only run on commit builds
19781978
tasks:
1979-
- name: release_on_merge
1979+
- name: release_om_and_agents

scripts/release/release_on_merge.py renamed to scripts/release/release_om_and_agents.py

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,18 @@
1111
skip_if_exists handles already-published images.
1212
1313
Usage:
14-
python release_on_merge.py [--dry-run]
14+
python release_om_and_agents.py [--dry-run]
1515
"""
1616
import json
1717
import logging
18-
import re
1918
import subprocess
2019
import sys
2120
from pathlib import Path
2221
from typing import Dict, List
2322

23+
import semver
24+
import yaml
25+
2426
logging.basicConfig(
2527
level=logging.INFO,
2628
format="%(asctime)s - %(levelname)s - %(message)s",
@@ -92,7 +94,7 @@ def get_ops_manager_mapping(release_data: Dict) -> Dict:
9294

9395
def get_latest_om_versions_from_evergreen_yaml() -> Dict[str, str]:
9496
"""
95-
Extract OM versions from .evergreen.yml anchors.
97+
Extract OM versions from .evergreen.yml anchors
9698
9799
Returns: {"60": "6.0.27", "70": "7.0.19", "80": "8.0.16"}
98100
"""
@@ -103,16 +105,24 @@ def get_latest_om_versions_from_evergreen_yaml() -> Dict[str, str]:
103105
logger.error(".evergreen.yml not found")
104106
return versions
105107

106-
content = evergreen_path.read_text()
107-
108-
# Match patterns like: - &ops_manager_60_latest 6.0.27 #
109-
pattern = r"-\s*&ops_manager_(\d+)_latest\s+(\S+)\s+#"
110-
111-
for match in re.finditer(pattern, content):
112-
major = match.group(1) # "60", "70", "80"
113-
version = match.group(2) # "6.0.27", "7.0.19", "8.0.16"
114-
versions[major] = version
115-
logger.info(f"Found OM {major}: {version}")
108+
with open(evergreen_path, "r") as f:
109+
data = yaml.safe_load(f)
110+
111+
# Extract version strings from the variables list
112+
# The YAML structure is: variables: [6.0.27, 7.0.19, 8.0.16, ...]
113+
variables = data.get("variables", [])
114+
115+
for var in variables:
116+
# Try to parse as semver
117+
try:
118+
version_info = semver.VersionInfo.parse(var)
119+
# Use major*10 + minor as the key (e.g., 6.0.x -> "60", 7.0.x -> "70")
120+
major_key = f"{version_info.major}{version_info.minor}"
121+
versions[major_key] = var
122+
logger.info(f"Found OM {major_key}: {var}")
123+
except ValueError:
124+
# Not a valid semver string, skip it
125+
continue
116126

117127
return versions
118128

@@ -198,7 +208,8 @@ def main():
198208
if not release_agent(agent_version, tools_version, f"OM {om_version}", args.dry_run):
199209
success = False
200210
else:
201-
logger.warning(f"No agent found for OM {om_version} in release.json")
211+
logger.critical(f"No agent found for OM {om_version} in release.json")
212+
sys.exit(1)
202213

203214
# Always print summary
204215
print_summary(args.dry_run)

0 commit comments

Comments
 (0)