Envoy導入ツール


#構成

#変数

  • ##ストーリー
      ##マルチサービスモード
    #タスクの実行
  • タスクの確認
    • ##メッセージ通知
    • Slack
    • #Discord
  • はじめに

    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 実行可能ファイルが見つかるようになります。

    Envoy の更新

    Composer を使用して、Envoy インストールを最新の状態に保つこともできます。

    composer global update コマンドを使用すると、グローバルにインストールされているすべての Composer パッケージが更新されます:

    composer global update

    ##タスクの作成

    すべての Envoy タスクは、プロジェクトのルート ディレクトリにある

    Envoy.blade.php

    ファイルで定義する必要があります。開始するための例を次に示します。

    @servers(['web' => ['user@192.168.1.1']])
    @task('foo', ['on' => 'web'])
        ls -la
    @endtask
    ご覧のとおり、ファイルの先頭には

    @server

    配列が定義されており、on を行うことができます。これらのサーバーはオプションで参照されます。 @ task 宣言には、タスクの実行時にサーバー上で実行される Bash コードを配置する必要があります。 サーバーの IP アドレスを

    127.0.0.1

    として指定することで、スクリプトを強制的にローカルで実行できます:

    @servers(['localhost' => '127.0.0.1'])

    ##構成
    Envoy タスクを実行する前に、PHP コードを実行する必要がある場合があります。

    @ 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

    Envoy は、各タスクの実行後に
    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
    この記事は、LearnKu.com Web サイトに初めて掲載されました。