Skip to main content

Multi-Phase Runs

Kurtosis environment definitions are encapsulated inside Starlark scripts, and these scripts can be bundled into packages.

Much like Spark, Gradle, Cypress, and Flink, a multi-phase approach is used when Kurtosis runs Starlark:

  1. Interpretation Phase: The Starlark is uploaded to the Kurtosis engine and the Starlark code is run. Each function call on the Plan object adds a step to a plan of instructions to execute, but the instruction isn't executed yet.
  2. Validation Phase: The plan of instructions is validated to ensure port dependencies are referencing existing ports, container images exist, duplicate services aren't being created, etc.
  3. Execution Phase: The validated plan of instructions is executed, in the order they were defined.

Practically, the user should be aware that:

To read about why Kurtosis uses this multi-phase approach, see here.