一、定义
laravel Envoy是远程服务器任务处理器
二、语法特点
它使用了 Blade 风格的语法,可以很方便的启动任务来进行项目部署、Artisan 命令运行等操作
三、安装
composer global require laravel/envoy
四、编写任务
所有的 Envoy 任务都必须定义在项目根目录的 Envoy.blade.php 文件中
基本格式:
@servers(['web' => ['user@192.168.1.1']])
@task('foo', ['on' => 'web'])
ls -la
@endtask
如你所见, @servers 的数组被定义在文件的起始位置处,让你在声明任务时可以在 on 选项里参照使用这些服务器。
@task 声明里,你可以放置当任务运行时想要在远程服务器运行的 Bash 命令,如:
php artisan fix:data --tags
任务变量:
可以通过命令行选项来传递变量至 Envoy 文件,以便自定义你的任务
envoy run deploy --branch=master
任务中变量的使用遵循blade语法:
@servers(['web' => '192.168.1.1'])
@task('deploy', ['on' => 'web'])
cd site
@if ($branch)
git pull origin {{ $branch }}
@endif
php artisan migrate
@endtask
引入文件:
如果你想在任务执行前引入其他 PHP 文件,可以直接在 Envoy.blade.php 文件起始位置使用 @include :
@include('vendor/autoload.php')
就比如我们可以把需要用到的变量,单独存到一个php文件中,引入到envoy中
运行php代码:
有时,你可能想在任务启动前运行一些 PHP 代码。这时可以使用 @setup 区块在 Envoy 文件中声明变量以及运行普通的 PHP 程序:
@setup
$now = new DateTime();
$environment = isset($env) ? $env : "testing";
@endsetup
任务故事(代替原macro):
laravel5.5中使用story任务故事通过一个统一的、便捷的名字来划分一组任务,来让你把小而专的子任务合并到大的任务里。而5.2及5.1中使用任务宏macro来顺序运行一组任务。在5.5中依然可以使用macro。举例:
@servers(['web' => '192.168.1.1'])
@story('deploy')
git
composer
@endstory
@task('git')
git pull origin master
@endtask
@task('composer')
composer install
@endtask
一个名为 deploy 的任务故事可以在它定义范围内列出子任务名字 git 和 composer 来运行各自对应的任务。
当 story 写好后,像运行普通任务一样运行它就好了:
envoy run deploy