ホームページ  >  記事  >  バックエンド開発  >  Laravel 基本チュートリアル -- SSH タスク

Laravel 基本チュートリアル -- SSH タスク

WBOY
WBOYオリジナル
2016-06-20 09:37:07892ブラウズ

Envoy Task Runner

概要

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

インストール

まず、Composer のグローバル コマンドを使用して 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 ディレクティブはタスクを定義するために使用されます。配列にはタスク名と配列パラメータが含まれ、その値はタスクが実行されるサーバーです。 @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')

タスクの確認

リモートサーバーが特定のタスクを実行する前にプロンプ​​トを表示したい場合は、タスク定義に確認ディレクティブを追加できます:

@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 ディレクティブにサーバーを追加する必要があります。各サーバーには一意の名前を割り当てる必要があります。サーバーを追加した後、実行するタスク コマンドでキーの配列を使用して、実行するサーバーをリストする必要があります:

@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

デフォルトでは、タスクはサーバー間で連続して実行されます。これは、現在のサーバーのタスクが完了した後にのみ、次のサーバーのタスクが実行されることを意味します。

並列実行

サーバー間でタスクを並列実行する場合。タスク ディレクティブに並列オプションを追加できます。

@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

タスク マクロ

タスク マクロを使用すると、一連のタスクを順番に実行するコマンドを定義できます。たとえば、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

タスクの実行

Envoy.blade.php ファイルで定義されたタスクを実行するには、Envoy の run コマンドを使用する必要があります。タスク名またはマクロ名をコマンドに渡すことができます。 Envoy はタスクを実行し、サーバー実行の出力を同期して表示します:

envoy run task

Notification

HipChat

後でメッセージを送信するには @hipchat コマンドを使用できます。タスクの実行が完了すると、メッセージがチームの HipChat ルームに通知されます。このコマンドは、メッセージに示されている API トークン、ルーム名、送信者のユーザー名を受け取ります:

@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 フック URL、チャネル名、および送信する必要があるメッセージのコンテンツを受け取ります:

@after  @slack('hook', 'channel', 'message')@endafter

Slack の Web サイトで Incoming WebHook を作成することで Webhook URL を取得できます。フック パラメーターは、次のような完全な Webhook URL である必要があります:

https://hooks.slack.com/services/ZZZZZZZZZ/YYYYYYYYY/XXXXXXXXXXXXXXX

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

  • #channel チャネルに通知を送信
  • @user がユーザー
に通知を送信します
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。