Skip to main content

Pipeline

A pipeline: tasks with dependencies and an optional schedule, run on one engine.

Spec​

FieldTypeRequiredDefaultDescriptionConstraints
spec.concurrencystringNoForbidWhat happens when a run is due while the previous one is still running.Allow, Forbid, Replace
spec.enginestringNoairflowEngine that orchestrates (and for spark, executes) the pipeline.airflow, spark
spec.ownerGroupstring (nullable)NoThe group that owns the pipeline: its members see it, run it and pause it in Nova. Optional so that existing pipelines keep working; a pipeline without an owner is visible to administrators only.min 1, max 64; pattern ^[A-Za-z0-9][A-Za-z0-9._-]*$
spec.paramsobject (map of string)NoValues for ${params.<name>} in task statements.
spec.retriesobject (nullable)NoRetry policy applied to every task.
spec.retries.attemptsintegerYesExtra attempts after the first failure.min 0, max 10; format int32
spec.retries.backoffstring (nullable)NoWait between attempts, for example 5m. Absent means one minute.
spec.runAsstring (nullable)NoService principal the tasks run as. Absent means the platform's default pipeline principal. By convention the principal of the owner group, named pipeline-<ownerGroup>; Nova's Schedule writes that name.
spec.scheduleobject (nullable)NoOptional schedule; a pipeline without one runs on demand only.
spec.schedule.cronstringYesFive-field cron expression, for example 0 3 * * *.min 9, max 100
spec.schedule.timezonestring (nullable)NoIANA time zone name, for example Europe/Berlin. Absent means UTC.
spec.tasksarray of objectYesTasks of the pipeline; at least one, at most 30.min 1, max 30
spec.tasks[].configobject (map of string)NoTask-specific parameters of the other kinds (model path, gate threshold, …).max 32
spec.tasks[].dependsOnarray of stringNoNames of the tasks that must succeed first.max 8
spec.tasks[].kindstringYesWhat a pipeline task does — the task contract behind Pipeline. sql is the first kind the platform runs (scheduled jobs phase J0); the others are accepted so manifests can be written ahead of their runtimes.sql, notebook, python, dbt, quality
spec.tasks[].namestringYesUnique within the pipeline; becomes the task id in the engine.min 1, max 63; pattern ^[A-Za-z0-9][A-Za-z0-9_-]*$
spec.tasks[].sqlstring (nullable)NoThe statement of a sql task. ${run.date}, ${run.id} and ${params.<name>} are expanded when the task runs, not in the resource.min 1, max 100000
spec.tasks[].warehousestring (nullable)NoWarehouse that runs a sql task; absent means the default warehouse.
spec.timeoutstring (nullable)NoLongest a whole run may take, for example 2h.

Status​

FieldTypeRequiredDefaultDescriptionConstraints
status.conditionsarray of objectNo[]
status.conditions[].lastTransitionTimestring (nullable)No
status.conditions[].messagestring (nullable)No
status.conditions[].observedGenerationinteger (nullable)Noformat int64
status.conditions[].reasonstring (nullable)No
status.conditions[].statusstringYes
status.conditions[].typestringYes
status.observedGenerationinteger (nullable)Noformat int64
status.phasestringNo""
status.runsarray of objectNo[]
status.runs[].idstringYes
status.runs[].startedAtstring (nullable)No
status.runs[].statestringYesFree-form until the adapters land (queued | running | succeeded | failed).

Validation rules​

  • task names must be unique
  • dependsOn must name other tasks of this pipeline
  • a sql task needs a sql statement
  • a notebook task needs config.notebook (a .ipynb file name) and config.objectVersion (the published version)
  • notebook tasks accept only notebook, objectVersion and params
  • notebook params must be a JSON object string of at most 4096 characters