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

54 lines
2.7 KiB
Python
Raw Normal View History

2023-04-14 17:24:15 +02:00
# TODO: jem, zam - 2023_04_14: mv file one dir up
2023-03-31 13:12:48 +02:00
from ..devops_build import DevopsBuild
2023-03-10 13:39:31 +01:00
from .infrastructure import ReleaseRepository, ReleaseTypeRepository, VersionRepository
from .infrastructure_api import GitApi, EnvironmentApi
2023-03-10 13:39:31 +01:00
from .services import PrepareReleaseService, TagAndPushReleaseService
from .domain import EnvironmentKeys
2023-02-16 14:21:27 +01:00
2023-04-14 17:24:15 +02:00
# TODO: jem, zam - 2023_04_14: use of config fkts is deprecated - use domain object instead (see: devops_image_build.py)
2023-02-22 14:11:39 +01:00
def create_release_mixin_config(config_file, main_branch) -> dict:
config = {}
config.update(
{'ReleaseMixin':
{'main_branch': main_branch,
2023-02-23 14:23:32 +01:00
'config_file': config_file}})
2023-02-16 14:21:27 +01:00
return config
2023-04-14 17:24:15 +02:00
# TODO: jem, zam - 2023_04_14: use of config fkts is deprecated - use domain object instead (see: devops_image_build.py)
2023-02-22 14:11:39 +01: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 14:21:27 +01:00
class ReleaseMixin(DevopsBuild):
2023-04-14 17:24:15 +02:00
# TODO: jem, zam - 2023_04_14: handover config as domain object
2023-03-02 18:16:03 +01:00
def __init__(self, project, config): # todo: create services in init, dont expose repos etc in api
2023-02-16 14:21:27 +01:00
super().__init__(project, config)
release_mixin_config = config['ReleaseMixin']
2023-02-23 14:23:32 +01:00
self.config_file = release_mixin_config['config_file']
2023-02-22 12:05:34 +01:00
self.main_branch = release_mixin_config['main_branch']
2023-02-28 13:25:47 +01:00
self.git_api = GitApi()
self.environment_api = EnvironmentApi()
self.env_key = EnvironmentKeys.DDADEVOPS_RELEASE_TYPE.name
self.environment_val_set = self.environment_api.get(self.env_key) is not "" and self.environment_api.get(self.env_key) is not None
if (self.environment_val_set):
self.release_type_repo = ReleaseTypeRepository.from_environment(self.environment_api)
else:
self.release_type_repo = ReleaseTypeRepository.from_git(self.git_api)
2023-02-28 14:55:51 +01:00
self.version_repo = VersionRepository(self.config_file)
self.release_repo = ReleaseRepository(self.version_repo, self.release_type_repo, self.main_branch)
2023-02-16 14:21:27 +01:00
def prepare_release(self):
2023-04-14 17:24:15 +02:00
# TODO: jem, zam - 2023_04_14: instantiate service on object creation?
2023-02-28 14:55:51 +01:00
prepare_release_service = PrepareReleaseService(self.release_repo)
prepare_release_service.write_and_commit_release()
prepare_release_service.write_and_commit_bump()
2023-02-22 14:11:39 +01:00
def tag_and_push_release(self):
2023-04-14 17:24:15 +02:00
# TODO: jem, zam - 2023_04_14: instantiate service on object creation?
2023-02-28 13:25:47 +01:00
tag_and_push_release_service = TagAndPushReleaseService(self.git_api)
2023-03-02 16:37:42 +01:00
tag_and_push_release_service.tag_release(self.release_repo.get_release())
2023-04-18 12:44:05 +02:00
tag_and_push_release_service.push_release()