What does it solve?
On a daily basis we find ourselves performing repetive tasks to manage process that are best handled by automation. Once defined tasks can be managed by a task runner forming larger workflows and processes. This project can be tailored to any custom tasks and be used as part of existing automated build and control systems. Quite often we have found it takes time for the major vendors to provide certain capabilities or your workflow requires a hybrid approach which is difficult to reach into. Wonka build bridges the gap quite nicely and enables chaining of workflows without needing to expose any internals of your organisation.
DevOps is a journey which should embrace On Prem, Hybrid, IAAS, PAAS, SAAS to name a few. If you find yourself requiring something that needs to run in sequence or in parallel and these tasks are written in .Net this project may be just what you are looking for. It has been written with extensibility in mind and is completely agnostic to the tasks it actually manages, by simply adhering to a contract, based on an interface driven API. When setup costs, whether time or other, cause some kind of automation to be put off it's nice to have something in your toolkit, until something more suitable comes along, as an add-on or extension for our favourite management platform of choice.
Since creating this project, it has been used for local server security scans, chaining web requests, end to end project build & packaging and a hybrid extension to Azure DevOps on prem inside a container, all to form larger workflows to overall solutions. Sometimes a simple task runner, which we can define and build ourselves in plain english, is just what we are looking for to run alongside, or form part of, the end to end pipeline.
A web client to supplement the console and windows output which enable some simple management of tasks including
Simple definition of tasks using XML.
A task is the single unit that performs something meaningful. It could be to run a script, copy a directory, contact a web service or as simple as outputting a message to the console.
A build, or execution of a set of steps, starts with a definition. A tasks definition is a collection of tasks that can run sequentially or in parallel.
For more complex scenarios that require existing or new executable binaries to be run, custom build tasks can be created. This enables proprietory tasks to live in your own source code repository and strung together as part of the definition via reflection. This makes it a simple process to string together binaries and scripts as part of a managed flow with very little effort. It also enables de-coupling of development as tasks can be developed separately, by different teams, with a degree of confidence as communication is handles by a simple API that all tasks adhere to.
The task runner takes a tasks definition and executes each task either sequentially or in parallel.
The root directory for the build process can be configured via the web.config file under the tasksRunnerRootPath key. The default directory is set as shown.
The build process will automatically create a build directory which contains sequentially numbered builds.
Once a build is complete, the release artifacts, along with release packages can be found under \build
Syncronous Tasks using Async / Await. Ensures task is completed before continuing with the next.
The project consists of the UI, which uses Signal R to communicate from the Task Runner to the web application and down to the client