Skip to main content

Introduzione

Laravel Envoy è uno strumento per eseguire task comuni su server remoti. Con la stessa sintassi di Blade, definisci facilmente task come deploy o esecuzione di comandi Artisan.
Al momento Envoy supporta solo macOS e Linux. Su Windows va usato tramite WSL2.

Installazione

Installa Envoy nel progetto tramite Composer.
Dopo l’installazione, l’eseguibile di Envoy è disponibile in vendor/bin.

Creare task

Definire un task

I task sono il mattone di base di Envoy. Un task definisce i comandi shell da eseguire sul server remoto quando lo si esegue. Ad esempio puoi definire un task che esegue php artisan queue:restart su tutti i server dei worker della coda. Tutti i task di Envoy si definiscono nel file Envoy.blade.php nella root dell’applicazione.
Come mostrato, definisci l’array @servers all’inizio del file e nei task fai riferimento a questi server tramite l’opzione on. La dichiarazione @servers va scritta obbligatoriamente su una sola riga. Dentro @task scrivi i comandi shell da eseguire sul server quando il task viene lanciato.

Task locali

Specificando come indirizzo IP 127.0.0.1 puoi forzare l’esecuzione dello script sul computer locale.

Importare task Envoy

Con la direttiva @import puoi importare altri file Envoy e aggiungere le loro story e i loro task al tuo file. Dopo l’import puoi eseguire i task come se fossero definiti nel tuo Envoy file.

Più server

Con Envoy puoi eseguire facilmente un task su più server. Aggiungi i server nella dichiarazione @servers assegnando un nome univoco a ciascuno, poi elencali nell’array on del task.

Esecuzione in parallelo

Per default il task viene eseguito in serie: dopo che è terminato sul primo server passa al secondo. Per eseguire il task in parallelo su più server, aggiungi l’opzione parallel alla dichiarazione del task.

Setup

Se devi eseguire del codice PHP prima di lanciare i task Envoy, usa la direttiva @setup.
Se devi caricare altri file PHP prima dell’esecuzione dei task, usa la direttiva @include all’inizio di Envoy.blade.php.

Variabili

Quando esegui un task Envoy puoi passare argomenti da riga di comando.
All’interno del task, con la sintassi “echo” di Blade accedi alle opzioni. Puoi usare anche if e cicli di Blade. Ad esempio, per verificare che la variabile $branch esista prima di eseguire git pull:

Story

Una story raggruppa una sequenza di task sotto un unico nome comodo. Ad esempio la story deploy esegue insieme i task update-code e install-dependencies.
Una story si esegue come un normale task.

Hook di completamento

Durante l’esecuzione di task e story vengono lanciati diversi hook. Envoy supporta @before, @after, @error, @success e @finished. Il codice dentro questi hook è interpretato come PHP e viene eseguito in locale, non sui server remoti su cui opera il task. Puoi definire tutti gli hook che vuoi; vengono eseguiti nell’ordine in cui compaiono nello script Envoy.
L’hook @finished riceve lo status code del task completato. Lo status code è null oppure un intero >= 0.

Eseguire i task

Per eseguire un task o una story definiti in Envoy.blade.php, esegui il comando run di Envoy passandone il nome. Envoy esegue il task e mostra in tempo reale l’output dai server remoti.

Conferma dell’esecuzione

Se vuoi chiedere conferma prima di eseguire un task, aggiungi la direttiva confirm alla dichiarazione. È utile soprattutto per operazioni distruttive.

Notifiche

Slack

Envoy può inviare una notifica a Slack dopo ogni esecuzione. La direttiva @slack accetta l’URL del webhook Slack e il nome del canale (o utente). L’URL del webhook si ottiene creando un’integrazione “Incoming WebHooks” dal pannello di Slack. Come primo argomento passi l’intero URL del webhook; come secondo, un canale (#channel) o un utente (@user).
Di default viene inviato un messaggio che descrive il task eseguito. Passando un terzo argomento a @slack puoi sovrascriverlo con un messaggio personalizzato.

Discord

Envoy supporta anche l’invio di notifiche a Discord dopo ogni esecuzione. La direttiva @discord accetta URL del webhook Discord e messaggio. Il webhook si crea nelle impostazioni del server scegliendo “Webhook” e il canale di destinazione.

Telegram

Envoy supporta anche notifiche a Telegram dopo ogni esecuzione. La direttiva @telegram accetta Bot ID e Chat ID Telegram. Il Bot ID si ottiene creando un nuovo bot con BotFather; il Chat ID si ricava con @username_to_id_bot.

Microsoft Teams

Envoy supporta anche notifiche a Microsoft Teams dopo ogni esecuzione. La direttiva @teams accetta il webhook Teams (obbligatorio), un messaggio, il colore del tema (success, info, warning, error) e un array di configurazione opzionale. Il webhook Teams si ottiene creando un Incoming Webhook. L’API Teams ha molte altre opzioni con cui puoi comporre le tue message card. Per i dettagli consulta la documentazione di Microsoft Teams.
Envoy presuppone una connessione SSH ai server remoti. In base all’ambiente devi predisporre autenticazione a chiave e controlli di accesso. Per un’automazione di deploy più avanzata, valuta anche la guida Deployment o l’integrazione con GitHub Actions.
Ultima modifica il 2 agosto 2026