dda-devops-build/release_mixin.py

60 lines
1.9 KiB
Python

from ddadevops import DevopsBuild
from ddadevops import execute
from ddadevops import gopass_field_from_path, gopass_password_from_path
from version import Version
from version_repository import VersionRepository
from services import InitReleaseService, PrepareReleaseService, TagAndPushReleaseService
from git_repository import GitRepository
def create_release_mixin_config(config, release_type, config_file, main_branch):
config.update({'ReleaseMixin':
{'main_branch': main_branch,
'file': config_file}})
return config
class ReleaseMixin(DevopsBuild):
def __init__(self, project, config):
super().__init__(project, config)
release_mixin_config = config['ReleaseMixin']
self.file = release_mixin_config['file']
self.main_branch = release_mixin_config['main_branch']
self.version_repo = VersionRepository(self.file)
def init(self): # returns versions
init_service = InitReleaseService(self.version_repo)
release_version = init_service.create_release_version()
bump_version = release_version.create_bump_version()
return release_version, bump_version
def prepare(self, release_version: Version, bump_version: Version): # writes into files, add. commit
git_repository = GitRepository()
if self.main_branch not in git_repository.get_current_branch():
raise Exception('Trying to release while not on main branch')
self.version_repo.write_file(release_version.get_version_string())
git_repository.add_file(self.file)
git_repository.commit(f'Release {release_version.get_version_string()}')
self.version_repo.write_file(bump_version.get_version_string())
git_repository.add_file(self.file)
git_repository.commit(f'Version bump {bump_version.get_version_string()}')
def tag_and_push(): # correct tag and do push
pass