dda-devops-build/src/main/python/ddadevops/release_mixin.py

63 lines
2.8 KiB
Python
Raw Normal View History

2023-04-18 13:33:14 +00:00
from typing import Optional
from pybuilder.core import Project
from src.main.python.ddadevops.devops_build import DevopsBuild
from src.main.python.ddadevops.infrastructure.release_mixin import ReleaseRepository, ReleaseTypeRepository, VersionRepository, GitApi, EnvironmentApi
from src.main.python.ddadevops.application import PrepareReleaseService, TagAndPushReleaseService
from src.main.python.ddadevops.domain import ReleaseConfig, EnvironmentKeys
2023-02-16 13:21:27 +00:00
2023-04-21 11:49:12 +00:00
# TODO: remove the config creation
2023-02-22 13:11:39 +00:00
def create_release_mixin_config(config_file, main_branch) -> dict:
config = {}
config.update(
{'ReleaseMixin':
{'main_branch': main_branch,
2023-02-23 13:23:32 +00:00
'config_file': config_file}})
2023-02-16 13:21:27 +00:00
return config
2023-04-21 11:49:12 +00:00
# TODO: remove the config creation
2023-02-22 13:11:39 +00:00
def add_versions(config, release_version, bump_version) -> dict:
config['ReleaseMixin'].update(
{'release_version': release_version,
'bump_version': bump_version})
return config
2023-02-16 13:21:27 +00:00
2023-04-21 11:49:12 +00:00
# TODO: remove the config argument
2023-02-16 13:21:27 +00:00
class ReleaseMixin(DevopsBuild):
2023-04-18 13:33:14 +00:00
def __init__(self, project: Project, config: Optional[dict] = None, release_config: Optional[ReleaseConfig] = None):
if not release_config:
if not config:
raise ValueError("Release parameters could not be set.")
2023-04-18 13:33:14 +00:00
super().__init__(project, config=config)
release_mixin_config = config['ReleaseMixin']
release_config = ReleaseConfig(
main_branch = release_mixin_config['main_branch'],
config_file = release_mixin_config['config_file'],
devops=self.repo.get_devops(project)
)
else:
super().__init__(project, devops=release_config.devops)
self.repo.set_release(self.project, release_config)
git_api = GitApi()
environment_api = EnvironmentApi()
env_key = EnvironmentKeys.DDADEVOPS_RELEASE_TYPE.name
environment_val_set = environment_api.get(env_key) != "" and environment_api.get(env_key) is not None
2023-04-18 13:33:14 +00:00
if environment_val_set:
release_type_repo = ReleaseTypeRepository.from_environment(environment_api)
else:
2023-04-18 13:33:14 +00:00
release_type_repo = ReleaseTypeRepository.from_git(git_api)
version_repo = VersionRepository(release_config.config_file)
release_repo = ReleaseRepository(version_repo, release_type_repo, release_config.main_branch)
self.prepare_release_service = PrepareReleaseService(release_repo)
self.tag_and_push_release_service = TagAndPushReleaseService(git_api, release_repo)
2023-02-16 13:21:27 +00:00
def prepare_release(self):
2023-04-18 13:33:14 +00:00
self.prepare_release_service.write_and_commit_release()
self.prepare_release_service.write_and_commit_bump()
2023-02-22 13:11:39 +00:00
def tag_and_push_release(self):
2023-04-18 13:33:14 +00:00
self.tag_and_push_release_service.tag_release()
self.tag_and_push_release_service.push_release()