Envoy-Bereitstellungstool
- Konfiguration
- VariablenAufgabenbestätigung
- 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.
werden alle global installierten Composer-Pakete aktualisiert:
〜/ .composer / vendor / bin
Envoy aktualisierenenvoy
envoy
Sie können Composer auch verwenden, um Ihre Envoy-Installation auf dem neuesten Stand zu halten. Mit dem Befehl
composer global update
composer global update
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
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.php
Sie können die lokale Ausführung des Skripts erzwingen, indem Sie die IP-Adresse des Servers als
@servers(['localhost' => '127.0.0.1'])
@server
on
@ task
127.0.0.1
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
@include('vendor/autoload.php')
@task('foo')
# ...
@endtask
@ setup
Envoy.blade.php
@include
Variablen
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
@servers(['web' => '192.168.1.1'])
@task('deploy', ['on' => 'web'])
cd site
@if ($branch)
git pull origin {{ $branch }}
@endif
php artisan migrate
@endtask
if
git 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