Consent

This site uses third party services that need your consent.

Skip to content
Steven Roland

Streamlining Deployments with Laravel Envoy

Laravel Envoy is a powerful tool for automating common tasks on remote servers, particularly useful for deployment processes. In this post, we'll explore how to set up Envoy, write tasks, and leverage its features for efficient workflow management.

Getting Started with Laravel Envoy

To begin using Envoy, install it via Composer:

composer require laravel/envoy --dev

Once installed, you can access the Envoy binary in your project's vendor/bin directory.

Writing Your First Task

Create an Envoy.blade.php file in your project's root directory. Here's a simple example:

@servers(['web' => '[email protected]'])

@task('deploy', ['on' => 'web'])
    cd /home/user/example.com
    git pull origin master
    composer install --no-dev
    php artisan migrate --force
@endtask

This task, when run, will SSH into the specified server, navigate to the project directory, pull the latest code, install dependencies, and run migrations.

Running Tasks

To execute a task, use the following command:

php vendor/bin/envoy run deploy

Advanced Features

Stories

Stories allow you to group multiple tasks under a single name:

@story('deploy')
    update-code
    install-dependencies
@endstory

@task('update-code')
    cd /home/user/example.com
    git pull origin master
@endtask

@task('install-dependencies')
    cd /home/user/example.com
    composer install
@endtask

Run the entire story with:

php vendor/bin/envoy run deploy

Variables

You can pass variables to your tasks:

@task('deploy', ['on' => 'web'])
    cd /home/user/example.com
    git pull origin {{ $branch }}
@endtask

Then run the task with:

php vendor/bin/envoy run deploy --branch=master

Suggested Usages

  • Automated Deployments: Set up tasks for pulling code, installing dependencies, and running migrations.

  • Database Management: Create tasks for database backups or running specific migrations.

  • Server Maintenance: Write tasks for clearing caches, restarting services, or updating server configurations.

  • Multi-Environment Deployments: Define different tasks for staging and production environments.

  • Continuous Integration: Integrate Envoy tasks with your CI/CD pipeline for automated testing and deployment.

Best Practices

  • Keep tasks focused and modular for better maintainability.

  • Use variables to make tasks more flexible and reusable.

  • Implement error handling and notifications for critical tasks.

  • Version control your Envoy.blade.php file along with your project.

Laravel Envoy simplifies server task management, making deployments and maintenance more efficient. By automating repetitive tasks, you can focus more on developing your application and less on operational overhead.

Remember, Envoy is not limited to Laravel projects - you can use it for any PHP application that requires remote task execution. Start incorporating Envoy into your workflow today and experience the benefits of streamlined server management.

More posts

Getting Started with Laravel Dusk for Browser Testing

Laravel Dusk simplifies browser testing with an easy-to-use API. Set up Dusk, write tests for page interactions, handle dynamic content, and capture screenshots. Use it for form submissions, user flows, and cross-browser compatibility.

The Art of Leaving: Growing Roots Before Taking Flight

Inspired by John Green's quote, this post explores the paradox of leaving: to truly appreciate departure, we must first establish deep connections. It encourages readers to grow roots while maintaining the courage to leave for personal growth.