laravel envoy详解

一、定义

laravel Envoy是远程服务器任务处理器


二、语法特点

它使用了 Blade 风格的语法,可以很方便的启动任务来进行项目部署、Artisan 命令运行等操作


三、安装

composer global require laravel/envoy

四、编写任务

所有的 Envoy 任务都必须定义在项目根目录的 Envoy.blade.php 文件中

基本格式:

@servers(['web' => ['[email protected]']])

@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





你可能感兴趣的:(php)