We currently have Java program which runs a multitude of tasks on our Windows servers, we are planning to replace that with an open source task automation software for efficiency and maintainability reasons.
The following are the features we are looking for:
- Ability to run tasks/scripts in any language (Java, C#, Python etc..)
- Schedule the tasks at any instant (12:00 AM 12/16/2010) or run them at specific intervals (Every 10 minutes).
- Ability to notify the admin if a task execution failed and preventing them to run again.
- Parallel execution of independent tasks and ability to set dependencies between tasks.
- Ability to priortize and preempt the tasks when needed without restarting the software.
- Reporting capabilities on how long each task took etc.
- Remotely adding, deleting and monitoring the progress of tasks which are being executed
Please let me know if you know of any great open source solutions which address all or most of these needs. Thanks for your help!
You can try using Hudson, the opensource Continuous Integration system for doing this. It provides most if not all of the features you are asking for. Each task (or call it "project" in the Hudson lingo) can be scheduled periodically, or via a SCM trigger, or a curl call using the tokenizer URL. You can interlink jobs as downstream projects, and can also execute them parallelly among various boxes. It has great error reporting capabilities, and archives all the build logs, error reports and supports various formats like junit to generate you colorful plots showing the trends of your job success rate, test metrics etc.
Refer this to get started off:
http://wiki.hudson-ci.org/display/HUDSON/Use+Hudson
You can schedule the tasks by creating them as Maven targets (or ant, Makefiles anything for that reason; it can run any script so it is quite flexible) The email notification is quite useful to notify is the jobs are failing or unstable.
Moreover, Hudson comes with a bunch of opensource plugins, and is very useful. Hope that helps.
Although support for Windows is still experimental or under progress, you can look into:
Puppet
http://projects.puppetlabs.com/projects/1/wiki/Puppet_Windows
and
Chef
http://wiki.opscode.com/display/chef/Installation+on+Windows
http://support.rightscale.com/12-Guides/Windows_User_Guide5_Configuring_Windows_Servers/Using_Chef_on_Windows
Have you considered Quartz.Net ?
Some highlighted features below.
Job scheduling
Clustering
Listeners & Plug-Ins
Have you researched PowerShell? It has the ability to call .net libraries, any type of executable and any type of script. You can script complex workflows with parallel tasks and sequential tasks. You can write to the Windows Log, send email notifications, write logs in a variety of formats, etc. If you run the scripts from Task Manager, you can remotely start, monitor and stop any task. It's free.