现代任务运行器

安装次数: 44,471,299

依赖者: 467

建议者: 4

安全: 0

星标: 2,660

关注者: 81

分支: 305

开放问题: 179

5.0.0 2024-04-17 15:13 UTC

README

现代简单的PHP任务运行器,受Gulp和Rake启发,旨在自动化常见任务

Gitter Latest Stable Version Latest Unstable Version Total Downloads

ci scrutinizer codecov license

  • 编写跨平台脚本
  • 处理资产(less、sass、压缩)
  • 运行测试
  • 执行守护进程(和工作者)
  • 监视文件系统更改
  • 使用sftp/ssh/docker进行部署

分支

所有版本都大致兼容;每个主要版本引入的重大更改相对较小,通常只影响大多数客户端未使用的类。

请注意,Robo 5.x已将consolidation/self-update作为直接依赖项删除。如果您正在使用它来更新应用程序phar,则需要显式添加它。

安装

Phar

下载robo.phar >

wget https://robo.li/robo.phar

要全局安装,请将robo.phar放在/usr/bin中。(OSX 10.11+上的/usr/local/bin/

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

现在您可以通过robo简单地使用它。

Composer

  • 运行composer require consolidation/robo:^4
  • 使用vendor/bin/robo执行Robo任务。

用法

所有任务都定义为RoboFile.php中的public methods。可以通过运行robo init来创建它。所有以task前缀开始的trait中的受保护方法都是任务,可以在您的任务中进行配置和执行。

示例

通过查看其自己的RoboFileCodeception项目的RoboFile来学习Robo的最佳方式。在examples/RoboFile.php中还有一些基本的示例命令。

以下是一些片段

运行接受测试,启动本地服务器和selenium服务器。

<?php

use Robo\Symfony\ConsoleIO;

class RoboFile extends \Robo\Tasks
{

    function testAcceptance(ConsoleIO $io, $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
       $this->collectionBuilder($io)->taskServer(8000)
            ->background()
            ->dir('web')
            ->run();

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

       // loading Symfony Command and running with passed argument
       $this->collectionBuilder($io)->taskSymfonyCommand(new \Codeception\Command\Run('run'))
            ->arg('suite','acceptance')
            ->run();
    }
}

如果您执行robo,您将看到名为test:acceptance的任务被添加到可用任务列表中。要执行它,您应该运行robo test:acceptance。您可以通过传递新的路径作为参数来更改selenium服务器的路径

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

使用watch任务,您可以使用它来运行测试或构建资产。

<?php
class RoboFile extends \Robo\Tasks {

    function watchComposer(ConsoleIO $io)
    {
        // when composer.json changes `composer update` will be executed
        $this->collectionBuilder($io)->taskWatch()->monitor('composer.json', function() use ($io) {
            $this->collectionBuilder($io)->taskComposerUpdate()->run();
        })->run();
    }
}

清理日志和缓存

<?php
class RoboFile extends \Robo\Tasks
{
    public function clean(ConsoleIO $io)
    {
        $this->collectionBuilder($io)->taskCleanDir([
            'app/cache',
            'app/logs'
        ])->run();

        $this->collectionBuilder($io)->taskDeleteDir([
            'web/assets/tmp_uploads',
        ])->run();
    }
}

此任务清理app/cacheapp/logs目录(忽略.gitignore和.gitkeep文件)。可以通过运行来执行

robo clean

创建Phar存档

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

我们需要更多任务!

创建您自己的任务,并通过拉取请求发送它们,或者创建带有"type": "robo-tasks"的包,在Packagist上的composer.json中创建with

鸣谢

关注@robo_php以获取更新。

Consolidation团队和我们的杰出的贡献者提供。

许可

MIT