Skip to content
Modern task runner for PHP
Branch: 1.x
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Failing test fixed by Annotated Command 2.10.2 upgrade (#817) Dec 21, 2018
scripts/composer Restore 5.5 fixup (#662) Dec 29, 2017
src Prepare for 1.4.10-dev Mar 19, 2019
.gitignore Simplify config aware trait Feb 17, 2019
.travis.yml Correct RELEASE script Mar 19, 2019
LICENSE Update Jan 2, 2019
RoboFile.php Correct RELEASE script Mar 19, 2019
appveyor.yml Add .gitattributes (#653) Dec 7, 2017
composer.lock Extend ConfigAwareTrait from consolidation config (#838) Feb 16, 2019
dependencies.yml Move g1a/composer-test-scenarios from require-dev to require. Jul 19, 2018
phpunit.xml Fix coveralls (#723) Apr 23, 2018
robo Fix phar build Jan 2, 2019


This is the 1.x (stable) branch of the Robo task runner. Development for Robo 2.x (future) is happening on the master branch.

Modern and simple PHP task runner inspired by Gulp and Rake aimed to automate common tasks:

Gitter Latest Stable Version Latest Unstable Version Total Downloads PHP 7 ready License

Build Status Windows CI Scrutinizer Code Quality Dependency Status

  • writing cross-platform scripts
  • processing assets (less, sass, minification)
  • running tests
  • executing daemons (and workers)
  • watching filesystem changes
  • deployment with sftp/ssh/docker



Download robo.phar >


To install globally put robo.phar in /usr/bin. (/usr/local/bin/ in OSX 10.11+)

chmod +x robo.phar && sudo mv robo.phar /usr/bin/robo

OSX 10.11+

chmod +x robo.phar && sudo mv robo.phar /usr/local/bin/robo

Now you can use it just like robo.


  • Run composer require consolidation/robo:~1
  • Use vendor/bin/robo to execute Robo tasks.


All tasks are defined as public methods in RoboFile.php. It can be created by running robo. All protected methods in traits that start with task prefix are tasks and can be configured and executed in your tasks.


The best way to learn Robo by example is to take a look into its own RoboFile or RoboFile of Codeception project. There are also some basic example commands in examples/RoboFile.php.

Here are some snippets from them:

Run acceptance test with local server and selenium server started.

class RoboFile extends \Robo\Tasks

    function testAcceptance($seleniumPath = '~/selenium-server-standalone-2.39.0.jar')
       // launches PHP server on port 8000 for web dir
       // server will be executed in background and stopped in the end

       // running Selenium server in background
        $this->taskExec('java -jar ' . $seleniumPath)

        // loading Symfony Command and running with passed argument
        $this->taskSymfonyCommand(new \Codeception\Command\Run('run'))

If you execute robo you will see this task added to list of available task with name: test:acceptance. To execute it you should run robo test:acceptance. You may change path to selenium server by passing new path as a argument:

robo test:acceptance "C:\Downloads\selenium.jar"

Using watch task so you can use it for running tests or building assets.

class RoboFile extends \Robo\Tasks {

    function watchComposer()
        // when composer.json changes `composer update` will be executed
        $this->taskWatch()->monitor('composer.json', function() {

Cleaning logs and cache

class RoboFile extends \Robo\Tasks
    public function clean()


This task cleans app/cache and app/logs dirs (ignoring .gitignore and .gitkeep files) Can be executed by running:

robo clean

Creating Phar archive

function buildPhar()
    $files = Finder::create()->ignoreVCS(true)->files()->name('*.php')->in(__DIR__);
    $packer = $this->taskPackPhar('robo.phar');
    foreach ($files as $file) {
        $packer->addFile($file->getRelativePathname(), $file->getRealPath());

We need more tasks!

Create your own tasks and send them as Pull Requests or create packages with "type": "robo-tasks" in composer.json on Packagist.


Follow @robo_php for updates.

Brought to you by Consolidation Team and our awesome contributors.



You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.