Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

koalamo's avatar

Laravel envoy not running all commands in a task

I am new to envoy and server administration in general (only been doing it a few months). I am trying to configure a test server using envoy, however for whatever reason it seems that certain commands in my task are just not being run and I cannot figure out why.

When I split the commands into their own tasks everything seems to work fine but when they are combined as one task it will only run the first docker-compose statement and then skip all the lines until the next task.

For example in install_composer_dependencies task, the first docker-compose will execute and then all subsequent echo statements and docker-compose statements that follow in the task will not execute, and I cannot figure out why????

@servers(['web' => 'test-ci'])

@setup
    $repository = 'git@<user>/<repo>';
    $releases_dir = '/srv/releases';
    $app_dir = '/srv/app';
    $app_name= 'test-app';
    $release = date('YmdHis');
    $new_release_dir = $releases_dir .'/'. $release;
    $release_mount = $releases_dir . '/' . $release . '/' . $app_name;
@endsetup

@story('deploy')
    clone_repository
    build_images
    install_composer_dependencies
    install_npm_dependencies
    move_env
    update_symlinks
    build_containers
    update_permissions
@endstory

@task('clone_repository')
    echo 'Cloning repository'
    [ -d {{ $releases_dir }} ] || mkdir {{ $releases_dir }}
    git clone --depth 1 {{ $repository }} {{ $new_release_dir }}
@endtask

@task('build_images')
    echo 'Building container images'
    cd {{ $new_release_dir }}/build
    export APP_MOUNT={{ $release_mount }}
    docker-compose -f docker-compose.base.yml -f docker-compose.prod.yml build
@endtask

@task('install_composer_dependencies')
    echo "Starting deployment ({{ $release }})" ;
    cd {{ $new_release_dir }};
    export APP_MOUNT={{ $release_mount }};

    echo "Running composer install";
    docker-compose -f build/docker-compose.base.yml -f build/docker-compose.prod.yml run --rm --user 1002 php-fpm composer install --prefer-dist --no-scripts -q -o;

    echo "Optamizing composer installs";
    docker-compose -f build/docker-compose.base.yml -f build/docker-compose.prod.yml run --rm --user 1002 php-fpm php artisan clear-compiled --env=production && php artisan optimize --env=production
@endtask
0 likes
1 reply

Please or to participate in this conversation.