Run builder when source is changed.

This commit is contained in:
Nikhil Badyal
2024-04-28 17:40:23 +05:30
committed by Nikhil Badyal
parent 5895e8ca60
commit d276696689
4 changed files with 28 additions and 4 deletions
+8 -2
View File
@@ -6,7 +6,7 @@ from loguru import logger
from main import get_app from main import get_app
from src.config import RevancedConfig from src.config import RevancedConfig
from src.manager.github import GitHubManager 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: def check_if_build_is_required() -> bool:
@@ -19,14 +19,20 @@ def check_if_build_is_required() -> bool:
logger.info(f"Checking {app_name}") logger.info(f"Checking {app_name}")
app_obj = get_app(config, app_name) app_obj = get_app(config, app_name)
old_integration_version = GitHubManager(env).get_last_version(app_obj, integration_version_key) 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_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) app_obj.download_patch_resources(config)
if GitHubManager(env).should_trigger_build( if GitHubManager(env).should_trigger_build(
old_integration_version, old_integration_version,
old_integration_source,
app_obj.resource["integrations"]["version"], app_obj.resource["integrations"]["version"],
app_obj.patches_dl,
) or GitHubManager(env).should_trigger_build( ) or GitHubManager(env).should_trigger_build(
old_patches_version, old_patches_version,
old_patches_source,
app_obj.resource["patches"]["version"], app_obj.resource["patches"]["version"],
app_obj.integrations_dl,
): ):
caused_by = { caused_by = {
"app_name": app_name, "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}") logger.info(f"New build can be triggered caused by {caused_by}")
needs_to_repatched.append(app_name) needs_to_repatched.append(app_name)
logger.info(f"{needs_to_repatched} are need to repatched.") 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 print(",".join(needs_to_repatched)) # noqa: T201
return True return True
return False return False
+13 -1
View File
@@ -10,7 +10,7 @@ from environs import Env
from src.app import APP from src.app import APP
from src.manager.release_manager import ReleaseManager 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): class GitHubManager(ReleaseManager):
@@ -34,3 +34,15 @@ class GitHubManager(ReleaseManager):
if data.get(app.app_name): if data.get(app.app_name):
return str(data[app.app_name][resource_name]) return str(data[app.app_name][resource_name])
return "0" 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"
+4 -1
View File
@@ -15,8 +15,11 @@ class ReleaseManager(object):
"""Get last patched version.""" """Get last patched version."""
raise NotImplementedError 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.""" """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}") logger.info(f"New version {new_version}, Old version {old_version}")
try: try:
return Version(new_version) > Version(old_version) # type: ignore[no-any-return] return Version(new_version) > Version(old_version) # type: ignore[no-any-return]
+3
View File
@@ -59,6 +59,9 @@ implement_method = "Please implement the method"
status_code_200 = 200 status_code_200 = 200
resource_folder = "apks" resource_folder = "apks"
branch_name = "changelogs" 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: def update_changelog(name: str, response: dict[str, str]) -> None: