Envoy-Bereitstellungstool


Einführung

Installation
    • Schreibaufgabe
    Konfiguration
  • Variablen
    • Stories
    • Multi-Service-Modus
    • Aufgabe ausführen
    Aufgabenbestätigung
    • Nachrichtenbenachrichtigung
    Slack
  • Discord
  • Einführung

    Laravel Envoy bietet eine Reihe prägnanter und einfacher Syntax zum Definieren täglicher Aufgaben von Remote-Servern. Die Syntax im Blade-Stil kann zum Konfigurieren von Bereitstellungsaufgaben, zum Ausführen von Artisan-Befehlen usw. verwendet werden. Derzeit unterstützt Envoy nur Mac- und Linux-Betriebssysteme. .

    Installation

    Führen Sie zunächst den Composer-Befehl global require aus, um Envoy global zu installieren:

    composer global require laravel/envoy

    Danke an Global Composer Bibliotheken können manchmal zu Paketversionskonflikten führen. Daher sollten Sie die Verwendung von cgr in Betracht ziehen, einem Ersatz für den Befehl composer global require. Installationsanweisungen für die cgr-Bibliothek finden Sie auf GitHub Ausführbare Datei.

    〜/ .composer / vendor / binEnvoy aktualisierenenvoyenvoySie können Composer auch verwenden, um Ihre Envoy-Installation auf dem neuesten Stand zu halten. Mit dem Befehl

    werden alle global installierten Composer-Pakete aktualisiert:
    composer global update

    composer global update

    Schreibaufgaben

    Alle Ihre Envoy-Aufgaben sollten in der Datei im Projektstammverzeichnis definiert werden. Hier ist ein Beispiel, um Ihnen den Einstieg zu erleichtern:

    @servers(['web' => ['user@192.168.1.1']])
    @task('foo', ['on' => 'web'])
        ls -la
    @endtask
    Wie Sie sehen können, ist oben in der Datei ein
    -Array definiert, mit dem Sie in der Option

    der Aufgabe auf diese Server verweisen können Erklärung. In Ihrer

    -Deklaration sollten Sie den Bash-Code platzieren, der auf Ihrem Server ausgeführt werden soll, wenn die Aufgabe ausgeführt wird.

    Envoy.blade.phpSie können die lokale Ausführung des Skripts erzwingen, indem Sie die IP-Adresse des Servers als

    angeben:

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

    127.0.0.1

    Konfiguration

    Manchmal müssen Sie möglicherweise etwas PHP ausführen, bevor Sie die Envoy-Aufgabe ausführen Code. Sie können die -Direktive verwenden, um Variablen zu deklarieren und andere allgemeine PHP-Arbeiten auszuführen, bevor Sie andere Aufgaben ausführen:

    @setup
        $now = new DateTime();    
        $environment = isset($env) ? $env : "testing";
    @endsetup
    Wenn Sie andere PHP-Dateien benötigen, bevor Sie eine Aufgabe ausführen, können Sie < oben in der Anweisung verwenden
    Datei 🎜> Anweisungen:

    @include('vendor/autoload.php')
    @task('foo')   
     # ...
    @endtask

    @ setup

    Envoy.blade.php@includeVariablen

    Bei Bedarf können Sie die Befehlszeile verwenden, um Optionswerte an zu übergeben die Envoy-Aufgabe:

    envoy run deploy --branch=master
    Sie können über Blades „Echo“-Syntax auf Optionen in Aufgaben zugreifen. Sie können auch

    -Anweisungen und Schleifen in Aufgaben verwenden. Bevor wir beispielsweise den Befehl
    ausführen, überprüfen wir die Existenz der Variablen
    :

    @servers(['web' => '192.168.1.1'])
    @task('deploy', ['on' => 'web'])
        cd site
    
        @if ($branch)
            git pull origin {{ $branch }}
        @endif
    
        php artisan migrate
    @endtask

    ifgit pull

    Stories

    Stories gruppieren eine Reihe von Aufgaben unter einem praktischen Namen, sodass Sie kleine, fokussierte Aufgaben in größere Aufgaben gruppieren können. Beispielsweise kann eine deploy-Story git- und composer-Aufgaben ausführen, indem der Aufgabenname in ihrer Definition aufgeführt wird:

    @servers(['web' => '192.168.1.1'])
    @story('deploy')
        git
        composer
    @endstory
    
    @task('git')
        git pull origin master
    @endtask
    
    @task('composer')
        composer install
    @endtask

    Sobald die Story geschrieben ist , können Sie es wie eine typische Aufgabe ausführen:

    envoy run deploy

    Mehrere Server

    Mit Envoy können Sie problemlos mehrere Server umfassen Server führen Aufgaben aus. Fügen Sie zunächst zusätzliche Server in der @server-Deklaration hinzu. Jedem Server sollte ein eindeutiger Name zugewiesen werden. Nachdem Sie die anderen Server definiert haben, listen Sie jeden Server im „on“-Array der Aufgabe auf:

    @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

    Parallel ausführen

    Standardmäßig wird dies auf jedem Server ausgeführt. Ausführen Aufgaben seriell. Mit anderen Worten: Die Ausführung der Aufgabe wird auf dem ersten Server beendet, bevor sie auf dem zweiten Server fortgesetzt wird. Wenn Sie Aufgaben auf mehreren Servern parallel ausführen möchten, fügen Sie der Aufgabendeklaration die Option parallel hinzu:

    @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

    Run Task

    Um eine Aufgabe oder Story auszuführen, die in einer Envoy.blade.php-Datei definiert ist, führen Sie Envoy's aus run-Befehl und übergeben Sie den Namen der Quest oder Geschichte, die Sie ausführen möchten. Wenn die Aufgabe ausgeführt wird, führt Envoy die Aufgabe aus und zeigt die Ausgabe vom Server an:

    envoy run task

    Aufgabenbestätigung

    Wenn Sie vor der Ausführung einer bestimmten Aufgabe auf dem Server zur Bestätigung aufgefordert werden möchten, sollten Sie die Anweisung confirm zur Aufgabendeklaration hinzufügen. Diese Option ist besonders nützlich für destruktive Operationen:

    @task('deploy', ['on' => 'web', 'confirm' => true])
        cd site
        git pull origin {{ $branch }}
        php artisan migrate
    @endtask

    Nachrichtenbenachrichtigung

    Slack

    Envoy Unterstützt auch das Senden von Benachrichtigungen an Slack, nachdem jede Aufgabe ausgeführt wurde. Die @slack-Direktive akzeptiert eine Slack-Hook-URL und einen Kanalnamen. Sie können Ihre Webhook-URL abrufen, indem Sie eine Incoming WebHooks-Integration in Ihrem Slack-Dashboard erstellen. Sie sollten die gesamte Webhook-URL an die @slack-Direktive übergeben:

    @finished
        @slack('webhook-url', '#bots')
    @endfinished

    Sie können einen der folgenden Kanalparameter angeben:

    • Senden Sie eine Benachrichtigung an die Kanal: #channel
    • Benachrichtigung an Benutzer senden: @user

    Discord

    Envoy unterstützt auch das Senden von Benachrichtigungen an Discord, nachdem jede Aufgabe ausgeführt wurde. Die @ discord-Direktive akzeptiert Discord-Hook-URL und -Nachricht. Sie können Ihre Webhook-URL abrufen, indem Sie den Webhook in Webhook erstellen und den Kanal auswählen, auf dem der Webhook veröffentlicht werden soll. Sie sollten die gesamte Webhook-URL an die @ discord-Direktive übergeben:

    @finished
        @discord('discord-webhook-url')
    @endfinished
    Dieser Artikel erschien zuerst auf der Website LearnKu.com.