Skip to content

Commit aea23ca

Browse files
authored
Merge pull request #195 from ISISComputingGroup/ticket8287_stale_build_improvments
Ticket 8287 - Update to stale build checks to paramatise
2 parents 242949c + e6d212f commit aea23ca

File tree

1 file changed

+28
-14
lines changed

1 file changed

+28
-14
lines changed

build_tools/check_builds_are_recent.py

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,16 @@
22
from typing import Union
33
from datetime import datetime
44
import sys
5+
import json
6+
7+
kits_root = r"\\isis\inst$\kits$\CompGroup\ICP"
58

69
def format_build_num_without_dash(build_num):
710
return f"BUILD{build_num}"
811

912
def format_build_num_with_dash(build_num):
1013
return f"BUILD-{build_num}"
1114

12-
kits_root = r"\\isis\inst$\kits$\CompGroup\ICP"
13-
epics_builds = ["EPICS_CLEAN_win10_x64", "EPICS_CLEAN_win7_x64", "EPICS_win7_x64", "EPICS_CLEAN_win10_x86", "EPICS_STATIC_CLEAN_win7_x64"]
14-
epics_build_dirs = [(f"EPICS\\{build}", format_build_num_with_dash) for build in epics_builds]
15-
build_dirs = [("Client_E4", format_build_num_without_dash), ("genie_python_3", format_build_num_with_dash)] + epics_build_dirs
16-
1715
def get_latest_build(dir, directory_formatter) -> Union[None, str]:
1816
latest_build = None
1917
with open(os.path.join(dir, "LATEST_BUILD.txt")) as latest_build_file:
@@ -36,37 +34,53 @@ def modified_in_last_x_days(dir, x_days):
3634
timedelta_since_last_modification = datetime_now - datetime_of_last_modification
3735
return timedelta_since_last_modification.days < x_days
3836

39-
def was_modified_recently(latest_build):
40-
x_days = 5
37+
def was_modified_recently(latest_build, num_days):
4138
last_modified_datetime = get_formatted_last_modified_datetime(latest_build)
42-
modified_recently = modified_in_last_x_days(latest_build, x_days)
39+
modified_recently = modified_in_last_x_days(latest_build, num_days)
4340
if modified_recently:
44-
print(f"SUCCESS: {latest_build} has been modified in the last {x_days} days. Last modified: {last_modified_datetime}")
41+
print(f"SUCCESS: {latest_build} has been modified in the last {num_days} days. Last modified: {last_modified_datetime}")
4542
else:
46-
print(f"WARNING: {latest_build} modified longer than {x_days} ago. Last modified: {last_modified_datetime}")
43+
print(f"WARNING: {latest_build} modified longer than {num_days} ago. Last modified: {last_modified_datetime}")
4744
return modified_recently
4845

49-
def check_build_dir(build_dir, directory_formatter):
46+
def check_build_dir(build_dir, num_days, directory_formatter):
5047
latest_build = get_latest_build(build_dir, directory_formatter)
5148
modified_recently = False
5249
if latest_build is None:
5350
print(f"WARNING: Could not get latest build dir from {build_dir}")
5451
else:
55-
modified_recently = was_modified_recently(latest_build)
52+
modified_recently = was_modified_recently(latest_build, num_days)
5653
return modified_recently
5754

5855
def check_build_dirs(build_dirs):
5956
build_dirs_not_modified_recently = []
6057
for build_dir in build_dirs:
6158
directory = build_dir[0]
62-
directory_formatter = build_dir[1]
59+
stale_days_limit = int(build_dir[1])
60+
directory_formatter = build_dir[2]
6361
build_dir_full_path = os.path.join(kits_root, directory)
64-
modified_recently = check_build_dir(build_dir_full_path, directory_formatter)
62+
modified_recently = check_build_dir(build_dir_full_path, stale_days_limit, directory_formatter)
6563
if not modified_recently:
6664
build_dirs_not_modified_recently.append(build_dir_full_path)
6765
return build_dirs_not_modified_recently
6866

6967
if __name__ == "__main__":
68+
builds_to_check = os.getenv("BUILDS_TO_CHECK")
69+
if builds_to_check is None:
70+
print (f"ERROR: BUILDS_TO_CHECK enviroment variable not set")
71+
sys.exit(1)
72+
try:
73+
builds_by_stale_times = json.loads(builds_to_check)
74+
except ValueError as e:
75+
print(f"ERROR: parameter is not valid JSON.\nParameter:{builds_to_check}\nSpecific Error: {e.args}")
76+
sys.exit(1)
77+
build_dirs = []
78+
for time, builds_by_stale_time in builds_by_stale_times.items():
79+
for build in builds_by_stale_time:
80+
directory_formatter = format_build_num_with_dash
81+
if build == "Client_E4":
82+
directory_formatter = format_build_num_without_dash
83+
build_dirs.append((build,time,directory_formatter))
7084
build_dirs_not_modified_recently = check_build_dirs(build_dirs)
7185
if build_dirs_not_modified_recently:
7286
sys.exit(1)

0 commit comments

Comments
 (0)