Skip to main content
Version: 8.x

Tasks

Use task() to define a task. Add a description with desc() before the task:

desc('My task');
task('my_task', function () {
// ...
});

Pass only the name to fetch an existing task and chain config on it:

task('my_task')->disable();

Task config​

These methods are chained off task('name') to configure behavior.

desc()​

Set the task's description (shown by dep list).

task('deploy', function () {
// ...
})->desc('Task description');

Equivalent to the desc() helper:

desc('Task description');
task('deploy', function () {
// ...
});

once()​

Run the task on a single host instead of all selected hosts.

oncePerNode()​

Run the task once per node, where a node is identified by hostname. Useful when several host aliases point at the same physical machine.

host('foo')->setHostname('example.com');
host('bar')->setHostname('example.com');
host('pro')->setHostname('another.com');

task('apt:update', function () {
// Runs twice: once for foo/bar (same hostname), once for pro.
run('apt-get update');
})->oncePerNode();

hidden()​

Hide the task from dep list.

addBefore()​

Attach a before-hook. Same as before() but chained off the task.

addAfter()​

Attach an after-hook. Same as after() but chained off the task.

limit()​

Cap the number of hosts the task runs on concurrently. Defaults to unlimited.

select()​

Restrict the task to hosts matching a selector. Replaces any previous selector on the task.

addSelector()​

Add another selector clause (OR). The task runs on hosts that match select() or any added selector.

verbose()​

Always run the task as if -v were passed.

disable()​

Disable the task. Disabled tasks do not run, even when invoked.

enable()​

Re-enable a task that was disabled.

Task grouping​

Pass an array of task names to define a group task that runs them in order:

task('deploy', [
'deploy:prepare',
'deploy:update_code',
'deploy:vendors',
'deploy:symlink',
'cleanup',
]);

Task hooks​

Run a task before or after another:

task('deploy:done', function () {
writeln('Deploy done!');
});

after('deploy', 'deploy:done');

deploy:done runs after deploy finishes.

note

Inspect attached hooks with:

dep tree deploy