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.