merge release & ReleaseContext
This commit is contained in:
parent
df1200de4a
commit
1e9f8ff077
10 changed files with 45 additions and 71 deletions
|
@ -35,19 +35,29 @@ classDiagram
|
|||
|
||||
class Release {
|
||||
release_main_branch
|
||||
release_config_file
|
||||
}
|
||||
class ReleaseContext {
|
||||
release_type
|
||||
release_version
|
||||
release_current_branch
|
||||
release_type
|
||||
}
|
||||
|
||||
class BuildFile {
|
||||
filename
|
||||
file_type
|
||||
content
|
||||
}
|
||||
|
||||
class Version {
|
||||
get_version_string(release_type: ReleaseType)
|
||||
create_release_version(release_type: ReleaseType):
|
||||
create_bump_version(release_type: ReleaseType):
|
||||
}
|
||||
|
||||
Devops *-- "0..1" Image: spcialized_builds
|
||||
Devops *-- "0..1" C4k: spcialized_builds
|
||||
Devops *-- "0..1" Release: mixins
|
||||
Release *-- "0..1" BuildFile: primary_release_file
|
||||
Release *-- "0..n" BuildFile: secondary_release_files
|
||||
BuildFile *-- "1" Version
|
||||
C4k *-- DnsRecord
|
||||
Release *-- "0..1" ReleaseContext
|
||||
|
||||
```
|
||||
|
||||
|
|
|
@ -20,6 +20,6 @@ from .devops_build import DevopsBuild, create_devops_build_config, get_devops_bu
|
|||
from .credential import gopass_password_from_path, gopass_field_from_path
|
||||
from .release_mixin import ReleaseMixin
|
||||
|
||||
from .domain import Validateable, DnsRecord, Devops, Image, Release, ReleaseContext
|
||||
from .domain import Validateable, DnsRecord, Devops, Image, Release
|
||||
|
||||
__version__ = "${version}"
|
||||
|
|
|
@ -2,4 +2,4 @@ from .common import Validateable, DnsRecord, Devops, BuildType, MixinType
|
|||
from .devops_factory import DevopsFactory
|
||||
from .image import Image
|
||||
from .c4k import C4k
|
||||
from .release import Release, ReleaseContext, ReleaseType, Version, EnvironmentKeys
|
||||
from .release import Release, ReleaseType, Version, EnvironmentKeys
|
||||
|
|
|
@ -4,7 +4,7 @@ from typing import List
|
|||
from .common import Devops, BuildType, MixinType
|
||||
from .image import Image
|
||||
from .c4k import C4k
|
||||
from .release import Release, ReleaseContext
|
||||
from .release import Release
|
||||
|
||||
|
||||
class DevopsFactory:
|
||||
|
@ -23,8 +23,7 @@ class DevopsFactory:
|
|||
|
||||
mixins = {}
|
||||
if MixinType.RELEASE in mixin_types:
|
||||
release_context = ReleaseContext(input)
|
||||
mixins[MixinType.RELEASE] = Release(input, release_context=release_context)
|
||||
mixins[MixinType.RELEASE] = Release(input)
|
||||
|
||||
devops = Devops(input, specialized_builds=specialized_builds, mixins=mixins)
|
||||
|
||||
|
|
|
@ -8,12 +8,10 @@ from .common import (
|
|||
|
||||
|
||||
class ReleaseType(Enum):
|
||||
MAJOR = 0
|
||||
MINOR = 1
|
||||
PATCH = 2
|
||||
SNAPSHOT = 3
|
||||
BUMP = None
|
||||
NONE = 15
|
||||
MAJOR = 3
|
||||
MINOR = 2
|
||||
PATCH = 1
|
||||
NONE = None
|
||||
|
||||
|
||||
class EnvironmentKeys(Enum):
|
||||
|
@ -66,14 +64,13 @@ class Version(Validateable):
|
|||
return bump_version
|
||||
|
||||
|
||||
class ReleaseContext(Validateable):
|
||||
def __init__(
|
||||
self,
|
||||
input: dict,
|
||||
):
|
||||
self.release_type = ReleaseType[input.get("release_type", "SNAPSHOT")]
|
||||
self.release_current_version = input.get("release_current_version")
|
||||
class Release(Validateable):
|
||||
def __init__(self, input: dict):
|
||||
self.release_type = ReleaseType[input.get("release_type", "NONE")]
|
||||
self.release_main_branch = input.get("release_main_branch", "main")
|
||||
self.release_current_branch = input.get("release_current_branch")
|
||||
self.release_current_version = input.get("release_current_version")
|
||||
self.release_config_file = input.get("release_config_file", "project.clj")
|
||||
self.version = self.__version_from_str__()
|
||||
|
||||
# TODO: mv version parsing to version
|
||||
|
@ -96,12 +93,10 @@ class ReleaseContext(Validateable):
|
|||
result += self.__validate_is_not_empty__("release_type")
|
||||
result += self.__validate_is_not_empty__("release_current_version")
|
||||
result += self.__validate_is_not_empty__("release_current_branch")
|
||||
result += self.__validate_is_not_empty__("release_main_branch")
|
||||
result += self.__validate_is_not_empty__("release_config_file")
|
||||
if self.version:
|
||||
result += self.version.validate()
|
||||
return result
|
||||
|
||||
def validate_branch(self, main_branch: str):
|
||||
result = []
|
||||
if (
|
||||
self.release_type is not None
|
||||
and self.release_type != ReleaseType.NONE
|
||||
|
@ -109,30 +104,3 @@ class ReleaseContext(Validateable):
|
|||
):
|
||||
result.append(f"Releases are allowed only on {main_branch}")
|
||||
return result
|
||||
|
||||
|
||||
class Release(Validateable):
|
||||
def __init__(
|
||||
self,
|
||||
input: dict,
|
||||
release_context: ReleaseContext,
|
||||
):
|
||||
self.release_main_branch = input.get("release_main_branch", "main")
|
||||
self.release_config_file = input.get("release_config_file", "project.clj")
|
||||
self.release_context = release_context
|
||||
|
||||
def release_version(self):
|
||||
return self.release_context.release_version()
|
||||
|
||||
def bump_version(self):
|
||||
return self.release_context.bump_version()
|
||||
|
||||
def validate(self):
|
||||
result = []
|
||||
result += self.__validate_is_not_empty__("release_main_branch")
|
||||
result += self.__validate_is_not_empty__("release_config_file")
|
||||
result += self.__validate_is_not_empty__("release_context")
|
||||
if self.release_context is not None:
|
||||
result += self.release_context.validate()
|
||||
result += self.release_context.validate_branch(self.release_main_branch)
|
||||
return result
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
from src.main.python.ddadevops.domain import (
|
||||
ReleaseContext,
|
||||
Version,
|
||||
ReleaseType,
|
||||
EnvironmentKeys,
|
||||
|
@ -116,11 +115,11 @@ class ReleaseContextRepository:
|
|||
self.version_repository = version_repository
|
||||
self.release_type_repository = release_type_repository
|
||||
|
||||
def get_release(self, main_branch: str) -> ReleaseContext:
|
||||
result = ReleaseContext(
|
||||
self.release_type_repository.get_release_type(),
|
||||
self.version_repository.get_version(),
|
||||
main_branch,
|
||||
)
|
||||
result.throw_if_invalid()
|
||||
return result
|
||||
# def get_release(self, main_branch: str) -> ReleaseContext:
|
||||
# result = ReleaseContext(
|
||||
# self.release_type_repository.get_release_type(),
|
||||
# self.version_repository.get_version(),
|
||||
# main_branch,
|
||||
# )
|
||||
# result.throw_if_invalid()
|
||||
# return result
|
||||
|
|
|
@ -10,7 +10,6 @@ from src.main.python.ddadevops.domain import (
|
|||
Version,
|
||||
ReleaseType,
|
||||
Release,
|
||||
ReleaseContext,
|
||||
)
|
||||
from src.main.python.ddadevops.domain.image import Image
|
||||
from .test_helper import build_devops
|
||||
|
|
|
@ -11,7 +11,6 @@ from src.main.python.ddadevops.domain import (
|
|||
Version,
|
||||
ReleaseType,
|
||||
Release,
|
||||
ReleaseContext,
|
||||
)
|
||||
from src.main.python.ddadevops.domain.image import Image
|
||||
from .test_helper import build_devops, devops_config
|
||||
|
@ -50,7 +49,7 @@ def test_version(tmp_path: Path):
|
|||
|
||||
|
||||
def test_release_context(tmp_path):
|
||||
sut = ReleaseContext(
|
||||
sut = Release(
|
||||
devops_config(
|
||||
{
|
||||
"release_type": "MINOR",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from pathlib import Path
|
||||
|
||||
from src.main.python.ddadevops.domain import ReleaseType, Version, ReleaseContext
|
||||
from src.main.python.ddadevops.domain import ReleaseType, Version
|
||||
|
||||
from .mock_infrastructure_api import MockGitApi
|
||||
|
||||
|
@ -38,6 +38,6 @@ class MockReleaseRepository():
|
|||
self.main_branch = main_branch
|
||||
self.get_release_count = 0
|
||||
|
||||
def get_release(self) -> ReleaseContext:
|
||||
def get_release(self) -> :
|
||||
self.get_release_count += 1
|
||||
return ReleaseContext(self.release_type_repository.get_release_type(), self.version_repository.get_version(), self.main_branch)
|
||||
return Release(self.release_type_repository.get_release_type(), self.version_repository.get_version(), self.main_branch)
|
||||
|
|
|
@ -7,7 +7,7 @@ from src.main.python.ddadevops.infrastructure.release_mixin import (
|
|||
GitApi,
|
||||
EnvironmentApi,
|
||||
)
|
||||
from src.main.python.ddadevops.domain import Devops, ReleaseContext, Release
|
||||
from src.main.python.ddadevops.domain import Devops, Release
|
||||
|
||||
from .resource_helper import ResourceHelper
|
||||
from .domain.test_helper import devops_config
|
||||
|
|
Loading…
Reference in a new issue