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.