LARAVEL

Laravel Envoy Remote Tasks

May 5, 2024 10 min read

Introduction

Laravel Envoy is a tool for executing common tasks on your remote servers. It provides a clean, minimal syntax for defining deployment scripts, Artisan commands, and other remote tasks.

Installation

composer global require laravel/envoy

Create Envoy.blade.php in your project root:

@servers(['production' => 'user@example.com'])

@task('deploy')
    cd /home/forge/example.com
    git pull origin main
    composer install
    php artisan migrate
@endtask

Defining Tasks

@servers(['web' => '192.168.1.1'])

@task('foo')
    ls -la
@endtask

@task('bar', ['on' => ['web']])
    ls -la
@endtask

Deployment Scripts

@servers(['production' => 'forge@159.223.1.1'])

@story('deploy')
    task('git_pull')
    task('composer_install')
    task('migrate')
    task('cache_clear')
@endstory

@task('git_pull')
    cd /home/forge/{{ $server }}
    git pull origin main
@endtask

@task('composer_install')
    composer install --no-dev --prefer-dist
@endtask

Task Macros

@macro('deploy')
    git_pull
    composer_install
    migrate
    cache_clear
@endmacro

@task('git_pull')
    git pull origin {{ $branch ?? 'main' }}
@endtask

@task('migrate')
    php artisan migrate --force
@endtask

Notifications

@setup
    $repo = 'my-org/my-project';
    $branch = 'main';
@endsetup

@story('deploy')
    git_pull
    composer_install
    migrate
@endstory

@after
    @slack('webhook-url', '#deployments')
@endafter

Summary

Laravel Envoy provides a clean way to execute tasks on remote servers. With its Blade-like syntax, you can define deployment scripts, run maintenance tasks, and automate server management with minimal setup.

For more information, check out our other tutorials on Laravel Forge and CI/CD Pipeline.