fluentcidocs
Website GitHub

Build pipelines

Native plans and matrices

Compose task graphs and typed matrix cases while keeping execution in the host scheduler.

Two composition layers

An SDK pipeline composes operations that execute through the engine. Native host plans describe tasks, dependencies, resources, retries, services, and caches as a whole graph. The engine owns scheduling and cancellation; plugins do not run a thread per matrix member against one mutable pipeline.

Native plan support is provided by the embedded engine's execute_plan API. Use matching SDK versions and engine capabilities. Engine-specific commands from other repositories are not automatically top-level fluentci commands.

Build a task

In a checked ClojureScript namespace, add fluentci.host as h and Typed Clojure as t:

#?(:clj (t/ann check-task [-> h/Task]))
(defn check-task []
  (-> (h/task "check" "/usr/bin/printf" ".")
      (h/with-args ["%s" "ready"])
      (h/with-timeout 10000)))

Constructing a task or compiling a plan does not execute its commands. Terminal calls such as h/run! or p/run-plan! submit a plan. The engine performs preflight validation before launching tasks. Give each invocation a fresh run directory for logs and its result journal.

Compose a matrix

The SDK's fluentci.matrix namespace provides named axes, Cartesian products, include/exclude operations, and dependency helpers. This expression describes four combinations without provisioning their runtimes:

(m/product (m/axis "node" ["22" "24"])
           (m/axis "suite" ["unit" "integration"]))

A matrix builder receives each typed case and returns a native task. m/parallel sets process concurrency. Labels are identifiers, not installers: a node=24 case still needs a command/environment that selects Node 24.

Workflow features

Native SDK APIs include retry policies, success/failure conditions, allowed failure, outputs, artifacts, output environment variables, exclusive and shared resources, and service health probes. Filesystem task constructors can operate without a shell. Cache keys and relocatable output contracts remain explicit.

See the engine's matrix guide and ClojureScript SDK reference for complete typed examples and limits.

Made with ♥ in Antananarivo, Madagascar.
Search documentation