Auto Release

This commit is contained in:
Nikhil Badyal
2024-04-16 13:03:12 +05:30
committed by Nikhil Badyal
parent 6dd960b147
commit 837395091a
9 changed files with 166 additions and 1 deletions
+1
View File
@@ -0,0 +1 @@
"""Release patch resource manager."""
+34
View File
@@ -0,0 +1,34 @@
"""Github Manager."""
import json
import os
import urllib.request
from pathlib import Path
from typing import Self
from environs import Env
from src.app import APP
from src.manager.release_manager import ReleaseManager
from src.utils import branch_name, updates_file
class GitHubManager(ReleaseManager):
"""Release manager with GitHub."""
def __init__(self: Self, env: Env) -> None:
self.update_file_url = (
f"https://raw.githubusercontent.com/{env.str('GITHUB_REPOSITORY')}/{branch_name}/{updates_file}"
)
def get_last_version(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][resource_name])
return "0"
+21
View File
@@ -0,0 +1,21 @@
"""Base release manager."""
from typing import Self
from loguru import logger
from packaging.version import Version
from src.app import APP
class ReleaseManager(object):
"""Base Release manager."""
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:
"""Function to check if we should trigger a build."""
logger.info(f"New version {new_version}, Old version {old_version}")
return Version(new_version) > Version(old_version) # type: ignore[no-any-return]
+1
View File
@@ -55,6 +55,7 @@ patches_json_version_key = "patches_json_version"
implement_method = "Please implement the method"
status_code_200 = 200
resource_folder = "apks"
branch_name = "changelogs"
def update_changelog(name: str, response: dict[str, str]) -> None: