Overview
Tumugi is inspired by Luigi written by Python, and our goal is create a better alternative of Rake. It can describe and run workflow written by ruby code.
Dependency resolution and parallel execution
Tumugi can resolve dependencies of tasks in a workflow and automatically run task in parallel if dependency task is already completed.
If First Task
is completed, Second Task
and Another Second Task
run in parallel. Last Task
wait until Second Task
and Another Second Task
completed.
Building a workflow as code
Using tumugi, workflow file is just a ruby code like below. So you can use any editors and rubygems as you like. Workflow as code is also good for version control, code review.
task :last_task do
requires [:second_task, :another_second_task]
end
task :second_task do
requires :first_task
end
task :another_second_task do
requires :first_task
end
task :first_task do
end
Target and Parameters
Target
is input and onput of Task
, and is a ruby class which has at least exist?
method.
Parameter
is another input of Task
. Task#run
method can refer these parameters and user can set parameter value from CLI options.
Plugin based architecture
Tumugi is based on plugin architecutre. All Task
and Targets
are made by plugin. Currently you can create custom Task
and Target
by plugin or reuse existing plugins.