Skip to content

Latest commit

 

History

History
82 lines (64 loc) · 2.62 KB

envoy-script-deployment.md

File metadata and controls

82 lines (64 loc) · 2.62 KB
@php
    $key = '~/.ssh/host_key';
    $host = 'user@host.com';
    $connection = '-i '.$key.' '.$host;
    $home = '/home/myroot';
    $development = $home.'/webapps/dev';
    $releases = $home.'/webapps/deployments/releases';
    $storage = $home.'/webapps/deployments/storage';
    $current = $home.'/webapps/deployments/current';
    $release = $releases.'/ver_'.date('YmdHis');
    $php = '/usr/local/bin/php71';
    $composer = $home.'/composer.phar';
@endphp

@servers(['local' => '127.0.0.1','web' => '-i ~/.ssh/host_key user@host.com'])

@task('makeKey', ['on' => 'local'])
    ssh-keygen -t rsa;
    scp {{$key}}.pub {{$host}}:temp_id_rsa_key.pub;
@endtask

@task('appendKey', ['on' => 'web'])
    cat ~/temp_id_rsa_key.pub >> ~/.ssh/authorized_keys;
    rm temp_id_rsa_key.pub;
    chmod 600 ~/.ssh/authorized_keys;
    chmod 700 ~/.ssh;
    chmod go-w $HOME;
@endtask

@task('destroy', ['on' => 'web'])
rm -rf {{ $home.'/webapps/deployments/*' }}
@endtask

@task('deploy', ['on' => 'web'])

    echo "Checking directories...";
    [ -d {{ $releases }} ] || mkdir {{ $releases }};
    [ -d {{ $storage }} ] || mkdir {{ $storage }}; chmod 777 {{ $storage }};
    [ -d {{ $storage }}/app ] || mkdir {{ $storage }}/app;
    [ -d {{ $storage }}/app/public ] || mkdir {{ $storage }}/app/public;
    [ -d {{ $storage }}/framework ] || mkdir {{ $storage }}/framework;
    [ -d {{ $storage }}/framework/cache ] || mkdir {{ $storage }}/framework/cache;
    [ -d {{ $storage }}/framework/sessions ] || mkdir {{ $storage }}/framework/sessions;
    [ -d {{ $storage }}/framework/views ] || mkdir {{ $storage }}/framework/views;



    echo "Cloning development to new release...";
    cp -r {{ $development }} {{ $release }};

    echo "Cleaning up release...";
    rm -rf {{ $release }}/vendor/;
    rm -rf {{ $release }}/storage/;
    rm -rf {{ $release }}/public/storage;


    echo "Creating symlink for release storage...";
    ln -s {{ $storage }} {{ $release }};

    echo "Installing release dependencies...";
    cd {{ $release }};
    {{ $php }} {{ $composer }} install --no-ansi --quiet --no-dev --no-interaction --no-progress --optimize-autoloader;

    echo "Creating symlink for release public storage...";
    {{ $php }} artisan storage:link;

    echo "Cleaning up caches...";
    {{ $php }} artisan cache:clear --quiet;
    {{ $php }} artisan view:clear --quiet;
    {{ $php }} artisan route:clear --quiet;

    echo "Optimizing release...";
    {{ $php }} artisan route:cache --quiet;
    {{ $php }} artisan optimize --quiet;

    echo "Creating symlink for release...";
    ln -nfs {{ $release }} {{ $current }};

    echo "Release is active...";
@endtask