dda-devops-build/release_mixin.py
2023-02-24 10:14:26 +01:00

53 lines
2.2 KiB
Python

import copy
from ddadevops import DevopsBuild
from ddadevops import execute
from ddadevops import gopass_field_from_path, gopass_password_from_path
from version_repository import VersionRepository
from services import InitReleaseService, PrepareReleaseService, TagAndPushReleaseService
from git_repository import GitRepository
from domain import ReleaseType, Version
def create_release_mixin_config(config_file, main_branch) -> dict:
config = {}
config.update(
{'ReleaseMixin':
{'main_branch': main_branch,
'config_file': config_file}})
return config
def add_versions(config, release_version, bump_version) -> dict:
config['ReleaseMixin'].update(
{'release_version': release_version,
'bump_version': bump_version})
return config
class ReleaseMixin(DevopsBuild):
def __init__(self, project, config):
super().__init__(project, config)
release_mixin_config = config['ReleaseMixin']
self.config_file = release_mixin_config['config_file']
self.main_branch = release_mixin_config['main_branch']
self.version_repo = VersionRepository(self.config_file)
self.git_repo = GitRepository()
self.release_version = None
self.bump_version = None
self.commit_string = None
def init_release(self):
init_service = InitReleaseService(self.version_repo)
self.release_version = init_service.create_release_version(self.commit_string)
self.bump_version = self.release_version.create_bump_version()
def prepare_release(self):
prepare_release_service = PrepareReleaseService(self.version_repo, self.git_repo, self.config_file, self.main_branch)
if self.release_version is None or self.bump_version is None:
raise Exception('prepare_release was called before init_release')
# prepare_release_service.run_tests() # not implemented
prepare_release_service.write_and_commit_release(self.release_version)
prepare_release_service.write_and_commit_bump(self.bump_version)
def tag_and_push_release(self):
tag_and_push_release_service = TagAndPushReleaseService(self.git_repo)
tag_and_push_release_service.tag_and_push_release(self.release_version)