fix release
This commit is contained in:
parent
2e2c04c8ba
commit
8359406330
6 changed files with 33 additions and 39 deletions
|
@ -34,9 +34,9 @@ classDiagram
|
|||
}
|
||||
|
||||
class Release {
|
||||
release_type
|
||||
release_main_branch
|
||||
release_current_branch
|
||||
release_type
|
||||
version
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ from .common import Devops, BuildType, MixinType
|
|||
from .image import Image
|
||||
from .c4k import C4k
|
||||
from .release import Release
|
||||
from .version import Version
|
||||
|
||||
|
||||
class DevopsFactory:
|
||||
|
@ -23,7 +24,8 @@ class DevopsFactory:
|
|||
|
||||
mixins = {}
|
||||
if MixinType.RELEASE in mixin_types:
|
||||
mixins[MixinType.RELEASE] = Release(input)
|
||||
version = Version.from_str(input["version"])
|
||||
mixins[MixinType.RELEASE] = Release(input, version)
|
||||
|
||||
devops = Devops(input, specialized_builds=specialized_builds, mixins=mixins)
|
||||
|
||||
|
|
|
@ -16,33 +16,26 @@ class EnvironmentKeys(Enum):
|
|||
|
||||
|
||||
class Release(Validateable):
|
||||
def __init__(self, input: dict):
|
||||
def __init__(self, input: dict, version: Version):
|
||||
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_config_file = input.get("release_config_file", "project.clj")
|
||||
self.release_current_version = Version.from_str(input.get("release_current_version"))
|
||||
self.release_config_file = input.get("release_config_file", "./project.clj")
|
||||
self.version = version
|
||||
|
||||
|
||||
def release_version(self) -> Version:
|
||||
return self.version.create_release_version(self.release_type)
|
||||
|
||||
def bump_version(self) -> Version:
|
||||
return self.release_version().create_bump_version()
|
||||
|
||||
def validate(self):
|
||||
result = []
|
||||
result += self.__validate_is_not_empty__("release_type")
|
||||
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_current_branch")
|
||||
result += self.__validate_is_not_empty__("release_config_file")
|
||||
result += self.__validate_is_not_empty__("release_current_version")
|
||||
if self.release_current_version:
|
||||
result += self.release_current_version.validate()
|
||||
result += self.__validate_is_not_empty__("version")
|
||||
if self.version:
|
||||
result += self.version.validate()
|
||||
if (
|
||||
self.release_type is not None
|
||||
and self.release_type != ReleaseType.NONE
|
||||
and self.release_main_branch != self.release_current_branch
|
||||
):
|
||||
result.append(f"Releases are allowed only on {main_branch}")
|
||||
result.append(f"Releases are allowed only on {self.release_main_branch}")
|
||||
return result
|
||||
|
|
|
@ -52,11 +52,11 @@ def test_devops_factory():
|
|||
"project_root_path": "../../..",
|
||||
"build_types": [],
|
||||
"mixin_types": ["RELEASE"],
|
||||
"release_main_branch": "main",
|
||||
"release_config_file": "project.clj",
|
||||
"version": "1.0.0",
|
||||
"release_type": "NONE",
|
||||
"release_current_version": "1.0.0",
|
||||
"release_main_branch": "main",
|
||||
"release_current_branch": "my_feature",
|
||||
"release_config_file": "project.clj",
|
||||
}
|
||||
)
|
||||
assert sut is not None
|
||||
|
|
|
@ -18,11 +18,11 @@ def devops_config(overrides: dict) -> dict:
|
|||
"c4k_grafana_cloud_password": "password",
|
||||
"c4k_grafana_cloud_url": "https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push",
|
||||
"c4k_auth": {},
|
||||
"release_main_branch": "main",
|
||||
"release_config_file": "project.clj",
|
||||
"version": "1.0.0",
|
||||
"release_type": "NONE",
|
||||
"release_current_version": "1.0.0",
|
||||
"release_main_branch": "main",
|
||||
"release_current_branch": "my_feature",
|
||||
"release_config_file": "./project.clj",
|
||||
}
|
||||
input = default.copy()
|
||||
input.update(overrides)
|
||||
|
|
|
@ -15,27 +15,26 @@ from src.main.python.ddadevops.domain import (
|
|||
from src.main.python.ddadevops.domain.image import Image
|
||||
from .test_helper import build_devops, devops_config
|
||||
|
||||
def test_release_context(tmp_path):
|
||||
|
||||
def test_sould_validate_release():
|
||||
sut = Release(
|
||||
devops_config(
|
||||
{
|
||||
"release_type": "MINOR",
|
||||
"release_current_version": "1.2.3",
|
||||
"release_current_branch": "main",
|
||||
}
|
||||
)
|
||||
),
|
||||
Version.from_str("1.3.1-SNAPSHOT"),
|
||||
)
|
||||
assert sut.release_version().get_version_string() == "1.3.0"
|
||||
assert sut.bump_version().get_version_string() == "1.3.1-SNAPSHOT"
|
||||
|
||||
|
||||
def test_release(tmp_path):
|
||||
sut = build_devops(
|
||||
{
|
||||
"release_type": "MINOR",
|
||||
"release_current_version": "1.2.3",
|
||||
"release_current_branch": "main",
|
||||
}
|
||||
)
|
||||
assert sut.mixins[MixinType.RELEASE]
|
||||
assert sut.is_valid()
|
||||
|
||||
sut = Release(
|
||||
devops_config(
|
||||
{
|
||||
"release_type": "MINOR",
|
||||
"release_current_branch": "some-feature-branch",
|
||||
}
|
||||
),
|
||||
Version.from_str("1.3.1-SNAPSHOT"),
|
||||
)
|
||||
assert not sut.is_valid()
|
||||
|
|
Loading…
Reference in a new issue