Skip to content

Commit e6d212f

Browse files
committed
Update to stale build checks to paramatise
Enables differnet builds to be checked for differnt ages of latest build and for this to be configured. This will enable new builds to be added through the Jenikins update without changes to the script
1 parent 242949c commit e6d212f

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)