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)