Spell CI
Imperative CI/CD workflows in Python 🪄
- Use custom CI orchestration logic. Pass data between jobs with ease.
 - Use SpellCI's persistent storage, synchronization primitives (e.g. for caching or parallelized builds)
 - Increase CI iteration speed. Test workflow logic as you would any Python code
 - Use our fully type-safe Python SDK. Catch errors early on, before triggering jobs
 
../../spellci/pipeline.py
from spell.ci import entrypoint
...
@entrypoint
async def entrypoint(context: PipelineContext):
    author = context.author
    git_sha = context.git_sha
    if context.has_path_changed(
        "apps/my-web-app"
    ):
        web_app = AppParams(
            app_dir="apps/my-web-app"
        )
        await docker_build(web_app)