Envoy導入ツール
#変数
- ##ストーリー#タスクの実行
- タスクの確認
はじめに
Laravel Envoy は、リモートサーバーの日常タスクを定義するための簡潔で軽量な構文のセットを提供します。ブレード スタイルの構文は、デプロイメント タスクの構成、アーティザン コマンドの実行などに使用できます。現在、Envoy は Mac と Linux オペレーティング システムのみをサポートしています。 .
インストール
まず、Composer の
global require
コマンドを実行して、Envoy をグローバルにインストールします。 :composer global require laravel/envoy
グローバル Composer ライブラリはパッケージ バージョンの競合を引き起こす場合があるため、
composer global require## のドロップイン代替品である
cgrの使用を検討することをお勧めします。 # 指示。
cgrライブラリのインストール手順は
GitHub にあります .~/.composer/vendor/ を必ず配置してくださいbin
ディレクトリを PATH に追加します。これにより、ターミナルで
envoyコマンドを実行するときに
envoy実行可能ファイルが見つかるようになります。
composer global update
コマンドを使用すると、グローバルにインストールされているすべての Composer パッケージが更新されます:
composer global update
##タスクの作成すべての Envoy タスクは、プロジェクトのルート ディレクトリにある
Envoy.blade.phpファイルで定義する必要があります。開始するための例を次に示します。
@server
ご覧のとおり、ファイルの先頭には@servers(['web' => ['user@192.168.1.1']]) @task('foo', ['on' => 'web']) ls -la @endtask
配列が定義されており、
127.0.0.1on
を行うことができます。これらのサーバーはオプションで参照されます。@ task
宣言には、タスクの実行時にサーバー上で実行される Bash コードを配置する必要があります。サーバーの IP アドレスを
として指定することで、スクリプトを強制的にローカルで実行できます:
##構成 Envoy タスクを実行する前に、PHP コードを実行する必要がある場合があります。@servers(['localhost' => '127.0.0.1'])
@ setup
ディレクティブを使用して、変数を宣言し、他のタスクを実行する前に他の一般的な PHP 作業を実行できます。@setup $now = new DateTime(); $environment = isset($env) ? $env : "testing"; @endsetup
タスクを実行する前に追加の PHP ファイルが必要な場合は、そうすることができます。 in
Envoy.blade.php ファイルの先頭で@include
ディレクティブを使用します:
@include('vendor/autoload.php') @task('foo') # ... @endtask
必要に応じて、コマンド ラインを使用してオプション値を Envoy タスクに渡すことができます:envoy run deploy --branch=master
Blade の「エコー」を通じてタスクのオプションにアクセスできます。構文。タスク内で
ifステートメントとループを使用することもできます。たとえば、
git pullコマンドを実行する前に、
$ Branch
変数の存在を確認してみましょう:@servers(['web' => '192.168.1.1']) @task('deploy', ['on' => 'web']) cd site @if ($branch) git pull origin {{ $branch }} @endif php artisan migrate @endtask
##
ストーリー
ストーリー 一連のタスクを便利な名前でグループ化すると、焦点を絞った小さなタスクを大きなタスクにグループ化できます。たとえば、
deploy
ストーリーでは、定義にタスク名をリストすることで、git
タスクとcomposer
タスクを実行できます。@servers(['web' => '192.168.1.1']) @story('deploy') git composer @endstory @task('git') git pull origin master @endtask @task('composer') composer install @endtask
##複数のサーバーEnvoy を使用すると、簡単に複数のサーバーにまたがることができます。複数のサーバーがタスクを実行します。まず、@server
宣言に追加のサーバーを追加します。各サーバーには一意の名前を割り当てる必要があります。他のサーバーを定義した後、タスクの「on」配列に各サーバーをリストします。envoy run deploy
並列実行デフォルトでは、各サーバーはタスクを実行します。シリアルに。つまり、タスクは最初のサーバーでの実行を終了してから、2 番目のサーバーで続行します。複数のサーバーでタスクを並行して実行する場合は、タスク宣言に
Parallel
オプションを追加します:@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
タスクを実行する
Envoy.blade.php
ファイルで定義されたタスクまたはストーリーを実行するには、Envoy のrun
コマンドを実行して、クエストとかストーリーとか。タスクが実行されると、Envoy はタスクを実行し、サーバーからの出力を表示します:
@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
タスク確認If サーバー上で特定のタスクを実行する前に確認を求めるプロンプトを表示したい場合は、タスク宣言に
confirm
ディレクティブを追加する必要があります。このオプションは、破壊的な操作に特に役立ちます:envoy run task
Slackへの通知の送信もサポートしています。@slack
ディレクティブは、Slack フック URL とチャネル名を受け入れます。 Slack ダッシュボードでIncoming WebHooks 統合を作成することで、Webhook URL を取得できます。 Webhook URL 全体を @slack
ディレクティブに渡す必要があります:
@task('deploy', ['on' => 'web', 'confirm' => true]) cd site git pull origin {{ $branch }} php artisan migrate @endtask
次のいずれかをチャネル パラメーターとして指定できます:
チャネルに通知を送信します:
#channel
#ユーザーに通知を送信:- @user
Discord
Envoy は、各タスクの実行後に Discord に通知を送信することもサポートしています。
@ discord
ディレクティブは、Discord フック URL とメッセージを受け入れます。 Webhook URL を取得するには、Webhook
で Webhook を作成し、Webhook を公開するチャネルを選択します。 Webhook URL 全体を@ discord
コマンドに渡す必要があります:@finished @slack('webhook-url', '#bots') @endfinished