A non-transitory computer-readable medium storing computer-executable instructions that when executed by a processor of a computer causes the processor to: generate an execution pipeline for executing a plurality of tasks derived from a run definition comprising execution definitions of each task of the plurality of tasks; evaluate the execution definitions to identify execution properties of the plurality of tasks; assign each task of the plurality of tasks to an execution environment selected from a set of execution environments based upon the execution properties of the tasks matching execution properties of the execution environments, wherein each execution environment executes tasks with different resources and functionality, wherein the instructions to assign each task comprise instructions to: evaluate a first execution definition of a first task to identify first execution properties specifying functions to execute and resource requirements of the first task; compare the resource requirements and functions specified by the first execution properties against execution properties of available resources and functions provided by each execution environment to assign ranks to each execution environment based upon a degree to which available resources and functions match or exceed the resource requirements and functions specified by the first execution properties; and assign the first task to an execution environment having a highest rank or a rank exceeding a threshold; and control the execution pipeline to execute each task within the assigned execution environments, wherein the execution definitions of each task are transformed into formats compatible for execution by the assigned execution environments. generate an execution pipeline for executing a plurality of tasks derived from a run definition comprising execution definitions of each task of the plurality of tasks; evaluate the execution definitions to identify execution properties of the plurality of tasks; assign each task of the plurality of tasks to an execution environment selected from a set of execution environments based upon the execution properties of the tasks matching execution properties of the execution environments, wherein each execution environment executes tasks with different resources and functionality, wherein the instructions to assign each task comprise instructions to: evaluate a first execution definition of a first task to identify first execution properties specifying functions to execute and resource requirements of the first task; compare the resource requirements and functions specified by the first execution properties against execution properties of available resources and functions provided by each execution environment to assign ranks to each execution environment based upon a degree to which available resources and functions match or exceed the resource requirements and functions specified by the first execution properties; and assign the first task to an execution environment having a highest rank or a rank exceeding a threshold; and evaluate a first execution definition of a first task to identify first execution properties specifying functions to execute and resource requirements of the first task; compare the resource requirements and functions specified by the first execution properties against execution properties of available resources and functions provided by each execution environment to assign ranks to each execution environment based upon a degree to which available resources and functions match or exceed the resource requirements and functions specified by the first execution properties; and assign the first task to an execution environment having a highest rank or a rank exceeding a threshold; and control the execution pipeline to execute each task within the assigned execution environments, wherein the execution definitions of each task are transformed into formats compatible for execution by the assigned execution environments.