在laravel中用Task Runner编写像Blade组件一样的Shell脚本功能
Task Runner for Laravel是一个由Pascal Baljet开发的软件包,它可以让你编写像Blade Components一样的Shell脚本,并在本地或远程服务器上运行它们:
{{-- resources/views/tasks/deploy-app.blade.php --}}
cd /var/www/html
git pull origin {{ $branch }}
php artisan migrate --database={{ $databaseConnection() }}
考虑到这个包中的惯例,上述模板会有一个配套的任务类:
use ProtoneMedia\LaravelTaskRunner\Task;
class DeployApp extends Task
{
public function __construct(public string $branch) { }
public function databaseConnection()
{
return 'mysql';
}
}
你可能已经注意到,数据库连接()的公共方法在模板中是可以调用的。
所有的公共方法都可以在任务刀片模板中使用。
如果你想触发上述任务,你可以使用包的 dispatch() 方法,它将在本地运行。
你也可以在后台调度任务,也可以在远程服务器上运行它们:
$output = DeployApp::dispatch();
$output = DeployApp::inBackgronud()
->onConnection('web')
->dispatch();
// API of the task result
$output->getBuffer();
$output->getExitCode();
$output->isSuccessful();
$output->isTimeout();
// returns the buffer as an array
$output->getLines();
这个包也有很好的测试助手,你可以在文档中读到这些。
你可以在GitHub上了解更多关于这个包的信息,获得完整的安装说明,并查看源代码。
https://github.com/protonemedia/laravel-task-runner#task-test-assertions
https://github.com/protonemedia/laravel-task-runner
相关文章