Run JSON based workflows
const Bluebird = require('bluebird')
const Runner = require('async-workflow')
const runner = new Runner({
startTaskId: 'clone',
tasks: {
clone: {
fn(options) {
return Bluebird.resolve('clone')
},
options: {
repo: 'knownasilya/async-workflow'
},
successTaskId: 'install',
failureTaskId: 'cleanup'
},
install: {
// Run in parallel
tasks: {
installA: {
fn() {
return new Bluebird((resolve) => {
setTimeout(() => {
resolve('installA')
}, 300)
})
}
},
installB: {
fn() {
return new Bluebird((resolve) => {
setTimeout(() => {
resolve('installB')
}, 100)
})
}
}
},
// Run once all pass or any fail
successTaskId: 'test',
failureTaskId: 'cleanup'
},
test: {
fn() {
return Bluebird.resolve('test')
},
successTaskId: 'deploy',
failureTaskId: 'cleanup'
},
deploy: {
fn() {
return Bluebird.resolve('deploy')
}
},
cleanup: {
fn() {
return Bluebird.resolve('cleanup')
}
}
}
})
const results = await runner.start()
- Test parallel tasks
- Figure out how results should be formatted/passed along
- Time tasks
- docker shell run