简介
Laravel Envoy 提供了简洁、轻量的语法用于定义在远程服务器上可执行的通用任务。通过 Blade 风格的语法,你可以很容易地设置任务从而完成部署、执行 Artisan 命令或其他更多工作。
官网:https://github.com/laravel/envoy
安装
直接通过 Composer 的 global 命令来安装 Envoy:
1 | $ composer global require "laravel/envoy=~1.0" |
务必将 ~/.composer/vendor/bin 目录加入到 PATH 环境变量中,这样才能在命令行中执行 envoy 命令时找到可执行文件。
1 | $ vim ~/.bash_profile |
Envoy 基本使用
创建任务
Envoy通过执行 Envoy.blade.php文件来执行SSH任务。
在项目目录创建Envoy.blade.php,写入如下内容:
1 | @servers(['web' => 'root@115.27.x.x']) |
如上所示,@servers数组定义了服务器地址,后续的任务声明中,你可以在 on 选项中直接引用。@task声明里定义了一个名称为foo的任务,用于执行ls -la。
执行任务
使用run命令来执行任务
1 | $ envoy run foo |
执行run命令后,控制台会要求输入服务器的密码。
输入密码后即可看到在服务器执行ls -la的结果。
如有需要,你还可以通过命令行向 Envoy 文件传递参数:
1 | $ envoy run deploy --path=/home/www |
1 | @servers(['web' => '192.168.1.1']) |
可以在 @setup 指令中声明变量,并在 Envoy 文件中执行普通的 PHP 代码:
1 | @setup |
还有多服务器并行执行:
1 | @servers(['web-1' => '192.168.1.1', 'web-2' => '192.168.1.2']) |
其他,@macro任务宏声明让你只用一条命令就能顺序执行一组任务, @after声明在任务执行完后处理,如发一封邮件通知等。
参考https://laravel.com/docs/5.1/envoy
使用envoy部署项目
在实际项目中我们常常使用git来作版本控制,开发完成后将代码提交到远程代码库。
在产品发布新版本时,可以在服务器直接git pull下来完成更新。我们将一系列任务通过envoy来执行,如:
1 | @servers(['web' => '115.27.x.x']) |
1 | $ envoy run deploy --branch=master |
基于envoy的项目:
Envoyer : https://envoyer.io/
envoy-deploy : https://github.com/papertank/envoy-deploy