Skip to content

Commit a1c374a

Browse files
committed
RPM factory, rewire WorkflowInput classes
1 parent c9f1806 commit a1c374a

File tree

5 files changed

+36
-27
lines changed

5 files changed

+36
-27
lines changed

config.yaml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
version: 1
22
packages:
33
docker:
4-
# available types: docker, debian
4+
# available types: docker, debian, homebrew
55
package_type: docker
66
# repo where the workflow is started
77
repo: redis/docker-library-redis
@@ -33,11 +33,22 @@ packages:
3333
publish_timeout_minutes: 10
3434
publish_inputs: {}
3535
rpm:
36-
package_type: debian
36+
package_type: rpm
3737
repo: redis/redis-rpm
3838
build_workflow: release_build_and_test.yml
3939
build_inputs: {}
4040
publish_internal_release: yes
4141
publish_workflow: release_publish.yml
4242
publish_timeout_minutes: 10
4343
publish_inputs: {}
44+
homebrew:
45+
package_type: homebrew
46+
repo: redis/homebrew-redis
47+
# homebrew has one fixed release branch: main
48+
ref: main
49+
build_workflow: release_build_and_test.yml
50+
build_inputs: {}
51+
publish_internal_release: yes
52+
publish_workflow: release_publish.yml
53+
publish_timeout_minutes: 10
54+
publish_inputs: {}

src/redis_release/bht/behaviours.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -711,13 +711,21 @@ def __init__(
711711
self.workflow = workflow
712712
self.package_meta = package_meta
713713
self.release_meta = release_meta
714-
super().__init__(name=name, log_prefix=log_prefix)
714+
super().__init__(name=f"{name} - debian", log_prefix=log_prefix)
715715

716716
def update(self) -> Status:
717+
if self.package_meta.release_type is not None:
718+
self.workflow.inputs["release_type"] = self.package_meta.release_type.value
719+
if self.release_meta.tag is not None:
720+
self.workflow.inputs["release_tag"] = self.release_meta.tag
717721
return Status.SUCCESS
718722

719723

720-
class DebianWorkflowInputs(ReleaseAction):
724+
class DockerWorkflowInputs(ReleaseAction):
725+
"""
726+
Docker uses only release_tag input which is set automatically in TriggerWorkflow
727+
"""
728+
721729
def __init__(
722730
self,
723731
name: str,
@@ -729,13 +737,9 @@ def __init__(
729737
self.workflow = workflow
730738
self.package_meta = package_meta
731739
self.release_meta = release_meta
732-
super().__init__(name=f"{name} - debian", log_prefix=log_prefix)
740+
super().__init__(name=name, log_prefix=log_prefix)
733741

734742
def update(self) -> Status:
735-
if self.package_meta.release_type is not None:
736-
self.workflow.inputs["release_type"] = self.package_meta.release_type.value
737-
if self.release_meta.tag is not None:
738-
self.workflow.inputs["release_tag"] = self.release_meta.tag
739743
return Status.SUCCESS
740744

741745

src/redis_release/bht/tree_factory.py

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@
1515
from ..models import PackageType
1616
from .backchain import create_PPA, latch_chains
1717
from .behaviours import (
18-
ClassifyHomebrewVersion,
19-
DebianWorkflowInputs,
2018
DetectHombrewReleaseAndChannel,
19+
DockerWorkflowInputs,
2120
GenericWorkflowInputs,
2221
HomewbrewWorkflowInputs,
2322
NeedToPublishRelease,
@@ -351,12 +350,8 @@ def create_extract_result_tree_branch(
351350
return extract_artifact_result
352351

353352

354-
class DebianFactory(GenericPackageFactory):
355-
"""Factory for Debian packages.
356-
357-
Inherits from GenericFactory and overrides only the methods that need
358-
Debian-specific behavior.
359-
"""
353+
class DockerFactory(GenericPackageFactory):
354+
"""Factory for Docker packages."""
360355

361356
def create_build_workflow_inputs(
362357
self,
@@ -366,8 +361,7 @@ def create_build_workflow_inputs(
366361
release_meta: ReleaseMeta,
367362
log_prefix: str,
368363
) -> Behaviour:
369-
370-
return DebianWorkflowInputs(
364+
return DockerWorkflowInputs(
371365
name, workflow, package_meta, release_meta, log_prefix=log_prefix
372366
)
373367

@@ -379,16 +373,16 @@ def create_publish_workflow_inputs(
379373
release_meta: ReleaseMeta,
380374
log_prefix: str,
381375
) -> Behaviour:
382-
from .behaviours import DebianWorkflowInputs
383-
384-
return DebianWorkflowInputs(
376+
return DockerWorkflowInputs(
385377
name, workflow, package_meta, release_meta, log_prefix=log_prefix
386378
)
387379

388380

389-
class DockerFactory(GenericPackageFactory):
390-
"""Factory for Docker packages."""
381+
class DebianFactory(GenericPackageFactory):
382+
pass
391383

384+
385+
class RPMFactory(GenericPackageFactory):
392386
pass
393387

394388

@@ -539,8 +533,9 @@ def create_build_workflow_inputs(
539533

540534
# Factory registry
541535
_FACTORIES: Dict[PackageType, GenericPackageFactory] = {
542-
PackageType.DEBIAN: DebianFactory(),
543536
PackageType.DOCKER: DockerFactory(),
537+
PackageType.DEBIAN: DebianFactory(),
538+
PackageType.RPM: RPMFactory(),
544539
PackageType.HOMEBREW: HomebrewFactory(),
545540
}
546541

src/redis_release/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ def release(
147147
help="Only process specific packages (can be specified multiple times)",
148148
),
149149
tree_cutoff: int = typer.Option(
150-
2000, "--tree-cutoff", "-m", help="Max number of ticks to run the tree for"
150+
5000, "--tree-cutoff", "-m", help="Max number of ticks to run the tree for"
151151
),
152152
force_release_type: Optional[List[str]] = typer.Option(
153153
None,

src/redis_release/state_manager.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
from redis_release.bht.state import ReleaseState, logger
1515
from redis_release.config import Config
16-
from redis_release.state_display import print_state_table
1716

1817
from .bht.state import ReleaseState
1918
from .models import ReleaseArgs

0 commit comments

Comments
 (0)