Small example repository that demonstrates a pluggable CI/CD scaffold with builders, deployers and per-service configuration.
Add a new builder in ONE file (no other changes needed):
# builders/mybuilder.py
from .core import Builder, BuilderType, register_builder
# 1. Add enum value
BuilderType.MYBUILDER = auto() # auto-generates next enum value
# 2. Create builder class
class MyBuilder(Builder):
def build(self) -> None:
print("building...") # replace with real build logic
# 3. Register it
register_builder(BuilderType.MYBUILDER, MyBuilder)Use it:
from builders import BuilderFactory, BuilderType
builder = BuilderFactory.get_builder(BuilderType.MYBUILDER)
builder.build()That's it! The plugin system auto-discovers builders.
builders/- builder plugins and core typescore.py- base types and plugin registrydocker.py,bake.py, etc - concrete builders
deployment.py- deployer backends and factoryservice.py- service configuration modelsprogram.py- example using builders/deployers
- Copy example services config:
cp services.json.example services.json- Run example program:
python program.pyInstall deps and run tests:
pip install -r requirements.txt
pytest -q- Replace prints with real build logic (kubectl/helm/etc)
- Add linting (black/flake8) and type checks (mypy)