def remove_task_configs_already_in_build(task_configs: Dict[str, Dict], evg_api: EvergreenApi, build_variant_config: Variant, version_id: str) -> None: """ Remove the task_configs that exist for tasks that have been pulled into the build manually. :param task_configs: The task configurations for the tasks to be generated. :param evg_api: Evergreen API object. :param build_variant_config: Config of build variant to collect task info from. :param version_id: The version_id of the version running selected tests. """ version = evg_api.version_by_id(version_id) try: build = version.build_by_variant(build_variant_config.name) except KeyError: LOGGER.debug("No build exists on this build variant for this version yet", variant=build_variant_config.name) build = None if build: tasks_already_in_build = build.get_tasks() for task in tasks_already_in_build: if task.display_name in task_configs: LOGGER.info( "Will not generate task that has already been pulled into the build manually", variant=build_variant_config.name, task_already_in_build=task.display_name) del task_configs[task.display_name]
def find_build_for_previous_compile_task(evg_api: EvergreenApi, target: TargetBuild) -> Build: """ Find build_id of the base revision. :param evg_api: Evergreen.py object. :param target: Build being targeted. :return: build_id of the base revision. """ project_prefix = target.project.replace("-", "_") version_of_base_revision = "{}_{}".format(project_prefix, target.revision) version = evg_api.version_by_id(version_of_base_revision) build = version.build_by_variant(target.build_variant) return build
def activate_task(expansions: EvgExpansions, evg_api: EvergreenApi) -> None: """ Activate the given task in the specified build. :param expansions: Evergreen expansions file contents. :param evg_api: Evergreen API client. """ if expansions.task == BURN_IN_TAGS: version = evg_api.version_by_id(expansions.version_id) for base_build_variant in expansions.burn_in_tag_buildvariants_list: build_variant = f"{base_build_variant}-required" try: build = version.build_by_variant(build_variant) except KeyError: LOGGER.warning( "It is likely nothing to burn_in, so burn_in_tags build variant" " was not generated. Skipping...", build_variant=build_variant) continue task_list = build.get_tasks() for task in task_list: if task.display_name == BURN_IN_TESTS: LOGGER.info("Activating task", task_id=task.task_id, task_name=task.display_name) evg_api.configure_task(task.task_id, activated=True) else: build = evg_api.build_by_id(expansions.build_id) task_list = build.get_tasks() for task in task_list: if task.display_name == expansions.task: LOGGER.info("Activating task", task_id=task.task_id, task_name=task.display_name) evg_api.configure_task(task.task_id, activated=True)