Skip to content

Commit cc85d23

Browse files
committed
Rework need to release for debian
1 parent eb22970 commit cc85d23

File tree

2 files changed

+66
-16
lines changed

2 files changed

+66
-16
lines changed

src/redis_release/bht/behaviours.py

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -874,26 +874,42 @@ def __init__(
874874
) -> None:
875875
self.release_meta = release_meta
876876
self.package_meta = package_meta
877+
self.release_version: Optional[RedisVersion] = None
877878
super().__init__(name=name, log_prefix=log_prefix)
878879

880+
def initialise(self) -> None:
881+
if self.package_meta.release_type is not None:
882+
return
883+
if self.release_meta.tag is None:
884+
self.logger.error("Release tag is not set")
885+
return
886+
self.release_version = RedisVersion.parse(self.release_meta.tag)
887+
879888
def update(self) -> Status:
889+
result: Status = Status.FAILURE
890+
880891
if self.package_meta.release_type is not None:
881-
if self.log_once(
882-
"release_type_detected", self.package_meta.ephemeral.log_once_flags
883-
):
884-
self.logger.info(
885-
f"Detected release type: {self.package_meta.release_type}"
886-
)
887-
return Status.SUCCESS
888-
if self.release_meta.tag and re.search(r"-int\d*$", self.release_meta.tag):
889-
self.package_meta.release_type = ReleaseType.INTERNAL
892+
result = Status.SUCCESS
893+
self.feedback_message = f"Release type: {self.package_meta.release_type}"
894+
elif self.release_version is not None:
895+
if self.release_version.is_internal:
896+
self.package_meta.release_type = ReleaseType.INTERNAL
897+
else:
898+
self.package_meta.release_type = ReleaseType.PUBLIC
899+
result = Status.SUCCESS
900+
self.feedback_message = f"Release type: {self.package_meta.release_type}"
890901
else:
891-
self.package_meta.release_type = ReleaseType.PUBLIC
892-
self.log_once(
902+
self.feedback_message = "Failed to detect release type"
903+
result = Status.FAILURE
904+
905+
if self.log_once(
893906
"release_type_detected", self.release_meta.ephemeral.log_once_flags
894-
)
895-
self.logger.info(f"Detected release type: {self.package_meta.release_type}")
896-
return Status.SUCCESS
907+
):
908+
if result == Status.SUCCESS:
909+
self.logger.info(f"[green]{self.feedback_message}[/green]")
910+
else:
911+
self.logger.error(f"[red]{self.feedback_message}[/red]")
912+
return result
897913

898914

899915
class IsForceRebuild(LoggingAction):

src/redis_release/bht/behaviours_debian.py

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
from typing import Optional
2+
13
from py_trees.common import Status
24

35
from redis_release.bht.behaviours import LoggingAction
46
from redis_release.bht.state import PackageMeta, ReleaseMeta
7+
from redis_release.models import RedisVersion
58

69
# Conditions
710

@@ -18,8 +21,39 @@ def __init__(
1821
) -> None:
1922
self.package_meta = package_meta
2023
self.release_meta = release_meta
24+
self.release_version: Optional[RedisVersion] = None
25+
2126
super().__init__(name=name, log_prefix=log_prefix)
2227

28+
def initialise(self) -> None:
29+
if self.release_meta.tag is None:
30+
self.logger.error("Release tag is not set")
31+
return
32+
if self.release_version is not None:
33+
return
34+
35+
if self.release_meta.tag == "unstable":
36+
return
37+
try:
38+
self.release_version = RedisVersion.parse(self.release_meta.tag)
39+
except ValueError as e:
40+
self.logger.error(f"Failed to parse release tag: {e}")
41+
return
42+
pass
43+
2344
def update(self) -> Status:
24-
# Debian packages are always released
25-
return Status.SUCCESS
45+
result: Status = Status.FAILURE
46+
if self.release_meta.tag is None:
47+
self.feedback_message = "Release tag is not set"
48+
result = Status.FAILURE
49+
if self.release_meta.tag == "unstable":
50+
self.feedback_message = "Skip unstable release for debian"
51+
result = Status.FAILURE
52+
53+
if self.release_version is not None:
54+
self.feedback_message = "Need to release debian"
55+
result = Status.SUCCESS
56+
57+
if self.log_once("need_to_release", self.package_meta.ephemeral.log_once_flags):
58+
self.logger.info(self.feedback_message)
59+
return result

0 commit comments

Comments
 (0)