ホームページ > バックエンド開発 > PHPチュートリアル > [ Laravel 5.2 ドキュメント ] サービス -- Envoy タスクランナー

[ Laravel 5.2 ドキュメント ] サービス -- Envoy タスクランナー

WBOY
リリース: 2016-06-23 13:17:04
オリジナル
921 人が閲覧しました

1. はじめに

Laravel Envoy は、リモートホスト上で実行される一般的なタスクを定義するためのクリーンで単純化された構文を提供します。 Blade スタイルの構文を使用すると、開発用のタスクやアーティザン コマンドなどを簡単に設定できます。現在、Envoy は Mac と Linux オペレーティング システムのみをサポートしています。

1.1 インストール

まず、Composer のグローバル コマンドを使用して Envoy をインストールします:

composer global require "laravel/envoy=~1.0"
ログイン後にコピー

~/.composer/vendor/bin ディレクトリがシステム パス PATH にあることを確認してください。そうでない場合、envoy をインストールできないため、ターミナルでコマンドを実行できません。見つかった。

Envoy を更新する

Composer を使用して、インストールされている Envoy を最新バージョンに保つこともできます。

composer global update
ログイン後にコピー

2. タスクを書き込む

すべての Envoy タスクは、プロジェクトのルート ディレクトリの Envoy.blade.php ファイルで定義されます。これは、開始するための 1 つの例です:

@servers(['web' => 'user@192.168.1.1'])@task('foo', ['on' => 'web'])    ls -la@endtask
ログイン後にコピー

ご覧のとおり、@servers 配列はファイルの先頭で定義されているため、@task 宣言の on オプションを使用してこれらのサーバーを参照できます。 、実行する Bash コードを配置する必要があります。

スタートアップ

Envoy タスクを評価する前に、いくつかの PHP コードを実行する必要がある場合があります。Envoy ファイルで @setup ディレクティブを使用して、変数と実行される PHP コードを宣言できます。

@setup    $now = new DateTime();    $environment = isset($env) ? $env : "testing";@endsetup
ログイン後にコピー

@ を使用することもできます。外部 PHP ファイルを導入するためにインクルードします:

@include('vendor/autoload.php');
ログイン後にコピー

タスクの確認

サーバー上で特定のタスクを実行する前に確認のポップアップ プロンプトが必要な場合は、タスク ステートメントで確認ディレクティブを使用できます:

@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
ログイン後にコピー

デフォルトでは、タスクは各サーバーで順番に実行されます。つまり、タスクは最初のサーバーで完了し、その後、そのサーバーで実行が開始されます。 2番目のサーバー。

並列実行

複数のサーバーで並列実行したい場合は、タスク宣言に並列オプションを追加します:

@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 タスク マクロ

マクロを使用すると、単一のコマンドを使用して連続して実行される複数のタスクを定義できます。たとえば、デプロイ マクロは git タスクとコンポーザー タスクを実行します:

@servers(['web' => '192.168.1.1'])@macro('deploy')    git    composer@endmacro@task('git')    git pull origin master@endtask@task('composer')    composer install@endtask
ログイン後にコピー

マクロを定義した後は、次の 1 つのコマンドで実行できます:

envoy run deploy
ログイン後にコピー

3. Envoy.blade.php からタスクを実行します

ファイル Envoy でタスクを実行するには、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
ログイン後にコピー

必要に応じて、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 Web サイトに統合された Incoming WebHook を作成することでフック URL を取得できます。フック パラメータは Incoming によって統合されます。 Webhook Slack 完全な Webhook URL を指定します。例:

https://hooks.slack.com/services/ZZZZZZZZZ/YYYYYYYYY/XXXXXXXXXXXXXXX
ログイン後にコピー

次の 2 つのいずれかをチャネル パラメーターとして指定できます:

チャネルにメッセージを送信します: #channel
  • ユーザーにメッセージを送信します: @user
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート