目錄
Envoy 任务运行器
简介
安装
编写任务
任务变量
多个服务器
任务宏
运行任务
通知
HipChat
Slack
首頁 後端開發 php教程 laravel 基础教程 -- SSH 任务

laravel 基础教程 -- SSH 任务

Jun 20, 2016 am 09:37 AM

Envoy 任务运行器

简介

Laravel Envoy 为远端服务器常用任务的定义与执行提供了迷你简洁的语法。你可以通过使用 Blade 语法样式轻松的为部署,Artisan 命令等设置任务。目前,Envoy 只支持 Mac 和 Linux 操作系统。

安装

首先,你需要通过 Composer 的 global 命令来安装 Envoy:

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

你需要确保 ~/.composer/vendor/bin 目录被加入到你的 PATH 中,这样才能使你在使用终端时可以直接使用 envoy 命令。

更新 Envoy

你可以使用 Composer 来维持 Envoy 的更新:

composer global update
登入後複製

编写任务

所有的 Envoy 任务应该被定义在你项目的根目录下的 Envoy.blade.php 文件中。这里有一个简单的示例:

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

就如你所看到的,@servers 指令被定义在文件的头部,并且包含一个数组,数组中包含服务器的列表。@task 指令用来定义任务,它包含一个任务名称,和一个数组参数,数组中包含一个 on 键,它的值就是任务所要执行的服务器,它应该是 @servers 指令列表中的一个或多个。你应该在 @task 指令的内部放置 Bash 代码,这些代码会在任务执行时传递给所要执行的远端服务器。

本地任务

你可以指定服务器为本地来执行本地的任务:

@servers(['localhost' => '127.0.0.1'])
登入後複製

引导

有时候,你可能希望在执行 Envoy 任务之前先执行某些 PHP 操作。你可以使用 @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
登入後複製

任务变量

如果你需要的话,你可以使用命令行开关来传递变量到 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
登入後複製

多个服务器

你可以轻松的跨多个服务器执行任务。首先,你需要在 @servers 指令中添加额外的服务器。每个服务器应该被分配一个唯一的名字。当你添加完额外的服务器之后,你需要在待执行的任务指令中使用数组 on 键来列出待执行的服务器:

@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
登入後複製

默认的,任务会在服务器间串行执行,这意味着只有在当前服务器执行任务完成之后才会执行下一个服务器的任务。

平行执行

如果你希望跨服务器平行执行任务。你可以在任务指令中添加 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
登入後複製

任务宏

任务宏允许你定义一个命令来顺序的执行一组任务。举个实例,我们定义一个 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
登入後複製

运行任务

你需要使用 Envoy 的 run 命令来执行 Envoy.blade.php 文件中所定义的任务。你可以传递一个任务的名称或者宏名称到命令中。Envoy 会执行任务并同步显示服务器执行的输出:

envoy run task
登入後複製

通知

HipChat

你可以使用 @hipchat 指令来在任务执行完成之后,发送一个消息通知到团队的 HipChat 房间中。这个指令接收一个 API token,房间的名称和消息中所显示的发送者的用户名:

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

如果你需要,你也可以发送自定义的消息到 HipChat 房间。构建消息时,任务可用的变量在消息中也是可用的:

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

Slack

除了 HipChat 之外,Envoy 也支持向 Slack 中发送通知。@slack 指令接收一个 Slack hook URL,一个频道名称,和你需要发送的消息内容:

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

你可以通过在 Slack 的网站上创建一个 Incoming WebHooks 来获取 webhook URL。hook 参数应该是一个完整的 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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

11個最佳PHP URL縮短腳本(免費和高級) 11個最佳PHP URL縮短腳本(免費和高級) Mar 03, 2025 am 10:49 AM

11個最佳PHP URL縮短腳本(免費和高級)

Instagram API簡介 Instagram API簡介 Mar 02, 2025 am 09:32 AM

Instagram API簡介

在Laravel中使用Flash會話數據 在Laravel中使用Flash會話數據 Mar 12, 2025 pm 05:08 PM

在Laravel中使用Flash會話數據

構建具有Laravel後端的React應用程序:第2部分,React 構建具有Laravel後端的React應用程序:第2部分,React Mar 04, 2025 am 09:33 AM

構建具有Laravel後端的React應用程序:第2部分,React

簡化的HTTP響應在Laravel測試中模擬了 簡化的HTTP響應在Laravel測試中模擬了 Mar 12, 2025 pm 05:09 PM

簡化的HTTP響應在Laravel測試中模擬了

php中的捲曲:如何在REST API中使用PHP捲曲擴展 php中的捲曲:如何在REST API中使用PHP捲曲擴展 Mar 14, 2025 am 11:42 AM

php中的捲曲:如何在REST API中使用PHP捲曲擴展

在Codecanyon上的12個最佳PHP聊天腳本 在Codecanyon上的12個最佳PHP聊天腳本 Mar 13, 2025 pm 12:08 PM

在Codecanyon上的12個最佳PHP聊天腳本

宣布 2025 年 PHP 形勢調查 宣布 2025 年 PHP 形勢調查 Mar 03, 2025 pm 04:20 PM

宣布 2025 年 PHP 形勢調查

See all articles