in src/utils.py [0:0]
def parse_modified_docker_files_info(files, framework, pattern=""):
"""
Parse all the files in PR to find docker file related changes for any framework
triggers an image build matching the image_type(training/testing), device_type(cpu_gpu)
and python version(py2 and py3) of the changed docker files
:param files: str
:param framework: str
:param pattern: str
:return: None
"""
rule = re.findall(rf"{pattern}", files)
for dockerfile in rule:
dockerfile = dockerfile.split("/")
if dockerfile[0] == "huggingface":
# HuggingFace related files stored in huggingface/<framework> directories
# Joining 1 and 2 elements to get huggingface_<framework> as a first element
dockerfile = [f"{dockerfile[0]}_{dockerfile[1]}"]+dockerfile[2:]
framework_change = dockerfile[0]
if dockerfile[0] == "habana":
framework_change = dockerfile[1]
dockerfile = [f"{dockerfile[0]}_{dockerfile[1]}"]+dockerfile[2:]
# If the modified dockerfile belongs to a different
# framework, do nothing
if framework_change != framework:
continue
image_type = dockerfile[1]
py_version = dockerfile[4]
device_type = dockerfile[-1].split(".")[-1]
LOGGER.info(f"Building dockerfile: {dockerfile}")
# Use class static variables to avoid passing, returning the varibles from all functions
JobParameters.device_types.append(device_type)
JobParameters.image_types.append(image_type)
JobParameters.py_versions.append(py_version)
# create a map for the image_build_string and run_test_types on it
# this map will be used to update the DLC_IMAGES for pr test jobs
run_tests_key = f"{image_type}_{device_type}_{py_version}"
update_image_run_test_types(run_tests_key, constants.ALL)