From d315006c8c972285b4da2033714c99678f5ff683 Mon Sep 17 00:00:00 2001 From: Nikhil Badyal Date: Sun, 28 Apr 2024 17:40:23 +0530 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Run=20builder=20when=20source=20is?= =?UTF-8?q?=20changed.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- check_resource_updates.py | 10 ++++++++-- src/manager/github.py | 14 +++++++++++++- src/manager/release_manager.py | 5 ++++- src/utils.py | 3 +++ 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/check_resource_updates.py b/check_resource_updates.py index 0aeb146b49..49f7fd22d2 100644 --- a/check_resource_updates.py +++ b/check_resource_updates.py @@ -6,7 +6,7 @@ from main import get_app from src.config import RevancedConfig from src.manager.github import GitHubManager -from src.utils import default_build, integration_version_key, patches_version_key +from src.utils import default_build, integration_version_key, integrations_dl_key, patches_dl_key, patches_version_key def check_if_build_is_required() -> bool: @@ -19,14 +19,20 @@ def check_if_build_is_required() -> bool: logger.info(f"Checking {app_name}") app_obj = get_app(config, app_name) old_integration_version = GitHubManager(env).get_last_version(app_obj, integration_version_key) + old_integration_source = GitHubManager(env).get_last_version_source(app_obj, integrations_dl_key) old_patches_version = GitHubManager(env).get_last_version(app_obj, patches_version_key) + old_patches_source = GitHubManager(env).get_last_version_source(app_obj, patches_dl_key) app_obj.download_patch_resources(config) if GitHubManager(env).should_trigger_build( old_integration_version, + old_integration_source, app_obj.resource["integrations"]["version"], + app_obj.patches_dl, ) or GitHubManager(env).should_trigger_build( old_patches_version, + old_patches_source, app_obj.resource["patches"]["version"], + app_obj.integrations_dl, ): caused_by = { "app_name": app_name, @@ -42,7 +48,7 @@ def check_if_build_is_required() -> bool: logger.info(f"New build can be triggered caused by {caused_by}") needs_to_repatched.append(app_name) logger.info(f"{needs_to_repatched} are need to repatched.") - if len(needs_to_repatched) > 0: + if needs_to_repatched: print(",".join(needs_to_repatched)) # noqa: T201 return True return False diff --git a/src/manager/github.py b/src/manager/github.py index 1288b0b260..2003326aa4 100644 --- a/src/manager/github.py +++ b/src/manager/github.py @@ -10,7 +10,7 @@ from src.app import APP from src.manager.release_manager import ReleaseManager -from src.utils import branch_name, updates_file, updates_file_url +from src.utils import app_dump_key, branch_name, updates_file, updates_file_url class GitHubManager(ReleaseManager): @@ -34,3 +34,15 @@ def get_last_version(self: Self, app: APP, resource_name: str) -> str: if data.get(app.app_name): return str(data[app.app_name][resource_name]) return "0" + + def get_last_version_source(self: Self, app: APP, resource_name: str) -> str: + """Get last patched version.""" + if os.getenv("DRY_RUN", default=None): + with Path(updates_file).open() as url: + data = json.load(url) + else: + with urllib.request.urlopen(self.update_file_url) as url: + data = json.load(url) + if data.get(app.app_name): + return str(data[app.app_name][app_dump_key][resource_name]) + return "0" diff --git a/src/manager/release_manager.py b/src/manager/release_manager.py index 5d466a0f21..34df75a4ff 100644 --- a/src/manager/release_manager.py +++ b/src/manager/release_manager.py @@ -15,8 +15,11 @@ def get_last_version(self: Self, app: APP, resource_name: str) -> str: """Get last patched version.""" raise NotImplementedError - def should_trigger_build(self: Self, old_version: str, new_version: str) -> bool: + def should_trigger_build(self: Self, old_version: str, old_source: str, new_version: str, new_source: str) -> bool: """Function to check if we should trigger a build.""" + if old_source != new_source: + logger.info(f"Trigger build because old source {old_source}, is different from new source {new_source}") + return True logger.info(f"New version {new_version}, Old version {old_version}") try: return Version(new_version) > Version(old_version) # type: ignore[no-any-return] diff --git a/src/utils.py b/src/utils.py index d09c94e749..1c7bfa0af6 100644 --- a/src/utils.py +++ b/src/utils.py @@ -59,6 +59,9 @@ status_code_200 = 200 resource_folder = "apks" branch_name = "changelogs" +app_dump_key = "app_dump" +patches_dl_key = "patches_dl" +integrations_dl_key = "integrations_dl" def update_changelog(name: str, response: dict[str, str]) -> None: