目錄
1、简介
1.1 安装
2、编写任务
2.1 任务变量
2.2 多个服务器
2.3 任务宏
3、运行任务
4、通知
4.1 HipChat
4.2 Slack
首頁 後端開發 php教程 [ Laravel 5.2 文档 ] 服务 -- Envoy Task Runner

[ Laravel 5.2 文档 ] 服务 -- Envoy Task Runner

Jun 23, 2016 pm 01:17 PM

1、简介

Laravel Envoy为定义运行在远程主机上的通用任务提供了一套干净、最简化的语法。使用Blade样式语法,你可以轻松为开发设置任务,Artisan命令,以及更多,目前,Envoy 只支持 Mac 和 Linux 操作系统。

1.1 安装

首先,使用 Composer 的 global命令安装 Envoy:

composer global require "laravel/envoy=~1.0"
登入後複製

确保 ~/.composer/vendor/bin目录在系统路径PATH中否则在终端中由于找不到 envoy而无法执行该命令。

更新Envoy

还可以使用 Composer 保持安装的 Envoy 是最新版本:

composer global update
登入後複製

2、编写任务

所有的 Envoy 任务都定义在项目根目录下的 Envoy.blade.php文件中,下面是一个让你开始的示例:

@servers(['web' => 'user@192.168.1.1'])@task('foo', ['on' => 'web'])    ls -la@endtask
登入後複製

正如你所看到的, @servers数组定义在文件顶部,从而允许你在任务声明中使用 on选项引用这些服务器,在 @task声明中,应该放置将要在服务器上运行的Bash代码。

启动

有时候,你需要在评估Envoy任务之前执行一些PHP代码,可以在Envoy文件中使用 @setup指令来声明变量和要执行的PHP代码:

@setup    $now = new DateTime();    $environment = isset($env) ? $env : "testing";@endsetup
登入後複製

还可以使用 @include来引入外部PHP文件:

@include('vendor/autoload.php');
登入後複製

确认任务

如果你想要在服务器上运行给定任务之前弹出弹出提示进行确认,可以在任务声明中使用 confirm指令:

@task('deploy', ['on' => 'web', 'confirm' => true])    cd site    git pull origin {{ $branch }}    php artisan migrate@endtask
登入後複製

2.1 任务变量

如果需要的话,你可以使用命令行开关传递变量到Envoy文件,从而允许你自定义任务:

envoy run deploy --branch=master
登入後複製

你可以在任务中通过Blade的“echo”语法使用该选项:

@servers(['web' => '192.168.1.1'])@task('deploy', ['on' => 'web'])    cd site    git pull origin {{ $branch }}    php artisan migrate@endtask
登入後複製

2.2 多个服务器

你可以轻松地在多主机上运行同一个任务,首先,添加额外服务器到 @servers声明,每个服务器应该被指配一个唯一的名字。定义好服务器后,在任务声明中简单列出所有服务器即可:

@servers(['web-1' => '192.168.1.1', 'web-2' => '192.168.1.2'])@task('deploy', ['on' => ['web-1', 'web-2']])    cd site    git pull origin {{ $branch }}    php artisan migrate@endtask
登入後複製

默认情况下,该任务将会依次在每个服务器上执行,这意味着,该任务在第一台服务器上运行完成后才会开始在第二台服务器运行。

平行运行

如果你想要在多个服务器上平行运行,添加 parallel选项到任务声明:

@servers(['web-1' => '192.168.1.1', 'web-2' => '192.168.1.2'])@task('deploy', ['on' => ['web-1', 'web-2'], 'parallel' => true])    cd site    git pull origin {{ $branch }}    php artisan migrate@endtask
登入後複製

2.3 任务宏

宏允许你使用单个命令中定义多个依次运行的任务。例如, deploy宏会运行git和composer任务:

@servers(['web' => '192.168.1.1'])@macro('deploy')    git    composer@endmacro@task('git')    git pull origin master@endtask@task('composer')    composer install@endtask
登入後複製

宏被定义好了之后,你就可以通过如下单个命令运行它:

envoy run deploy
登入後複製

3、运行任务

要从 Envoy.blade.php文件中运行一个任务,需要执行Envoy的 run命令,然后传递你要执行的任务的命令名或宏。Envoy将会运行命令并从服务打印输出:

envoy run task
登入後複製

4、通知

4.1 HipChat

运行完一个任务后,可以使用Envoy的 @hipchat指令发送通知到团队的 HipChat房间,该指令接收一个API令牌、房间名称、和用户名:

@servers(['web' => '192.168.1.1'])@task('foo', ['on' => 'web'])    ls -la@endtask@after    @hipchat('token', 'room', 'Envoy')@endafter
登入後複製

需要的话,你还可以传递自定义发送给HipChat房间的消息,所有在Envoy任务中有效的变量在构建消息时也有效:

@after    @hipchat('token', 'room', 'Envoy', "{$task} ran in the {$env} environment.")@endafter
登入後複製

4.2 Slack

除了HipChat之外,Envoy还支持发送通知到 Slack。 @slack指令接收一个Slack钩子URL、频道名称、和你要发送给该频道的消息:

@after    @slack('hook', 'channel', 'message')@endafter
登入後複製

你可以通过创建集成到Slack网站的Incoming WebHooks来获取钩子URL,该hook参数是由 Incoming Webhooks Slack 集成提供的完整webhook URL,例如:

https://hooks.slack.com/services/ZZZZZZZZZ/YYYYYYYYY/XXXXXXXXXXXXXXX
登入後複製

你可以提供下面两种其中之一作为频道参数:

  • 发送消息到频道:  #channel
  • 发送消息到用户:  @user
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

會話如何劫持工作,如何在PHP中減輕它? 會話如何劫持工作,如何在PHP中減輕它? Apr 06, 2025 am 12:02 AM

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

描述紮實的原則及其如何應用於PHP的開發。 描述紮實的原則及其如何應用於PHP的開發。 Apr 03, 2025 am 12:04 AM

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

在PHPStorm中如何進行CLI模式的調試? 在PHPStorm中如何進行CLI模式的調試? Apr 01, 2025 pm 02:57 PM

在PHPStorm中如何進行CLI模式的調試?在使用PHPStorm進行開發時,有時我們需要在命令行界面(CLI)模式下調試PHP�...

PHP 8.1中的枚舉(枚舉)是什麼? PHP 8.1中的枚舉(枚舉)是什麼? Apr 03, 2025 am 12:05 AM

PHP8.1中的枚舉功能通過定義命名常量增強了代碼的清晰度和類型安全性。 1)枚舉可以是整數、字符串或對象,提高了代碼可讀性和類型安全性。 2)枚舉基於類,支持面向對象特性,如遍歷和反射。 3)枚舉可用於比較和賦值,確保類型安全。 4)枚舉支持添加方法,實現複雜邏輯。 5)嚴格類型檢查和錯誤處理可避免常見錯誤。 6)枚舉減少魔法值,提升可維護性,但需注意性能優化。

如何在系統重啟後自動設置unixsocket的權限? 如何在系統重啟後自動設置unixsocket的權限? Mar 31, 2025 pm 11:54 PM

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

See all articles