laravel envoy详解

来源:互联网 发布:大数据 adhoc 编辑:程序博客网 时间:2024/06/09 17:49

一、定义

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