laravel envoy详解

一、定义

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

日记本

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

赞赏支持
被以下专题收入,发现更多相似内容