Skip to content

Instantly share code, notes, and snippets.

@myusufid
Last active August 12, 2022 10:39
Show Gist options
  • Save myusufid/e52f7ecbb2f5f46cbdc9986a571e28d2 to your computer and use it in GitHub Desktop.
Save myusufid/e52f7ecbb2f5f46cbdc9986a571e28d2 to your computer and use it in GitHub Desktop.

Revisions

  1. myusufid revised this gist Aug 12, 2022. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion Envoy.blade.php
    Original file line number Diff line number Diff line change
    @@ -87,7 +87,7 @@


    @finished
    @slack('https://hooks.slack.com/services/T9LEZNPU4USDAKK', '#gitlab-activities', "Deployed {$server}")
    @slack('https://hooks.slack.com/services/T9LEZNsPU4USDAKK', '#gitlab-activities', "Deployed {$server}")
    @endfinished

    @task('say_finished')
  2. myusufid created this gist Apr 27, 2019.
    112 changes: 112 additions & 0 deletions Envoy.blade.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,112 @@
    @setup
    $__container->servers([
    'staging' => 'user@ip_address',
    'production' => ['user@ip_address -p 8288'],
    ]);
    @endsetup

    @setup
    $repository = '[email protected]:username/awesome_project_ever.git';
    $releases_dir = '/var/www/html/app/awesome_project_ever/releases';
    $app_dir = '/var/www/html/app/awesome_project_ever';
    $release = date('YmdHis');
    $new_release_dir = $releases_dir .'/'. $release;
    $branch = isset($branch) ? $branch : "master";
    if($server == "staging"){
    $branch = "staging";
    }
    @endsetup

    @story('deploy',['on' => $server,'parallel' => true])
    clone_repository
    run_composer
    update_symlinks
    deployment_migrate
    deployment_cache
    clean_old_releases
    set_permission_folder
    say_finished
    @endstory

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

    @task('run_composer')
    echo "Starting deployment ({{ $release }})"
    cd {{ $new_release_dir }}
    composer install --prefer-dist --no-scripts -q -o
    @endtask

    @task('update_symlinks')
    echo "Linking storage directory"
    cp -R {{ $new_release_dir }}/storage {{ $app_dir }}
    rm -rf {{ $new_release_dir }}/storage
    ln -nfs {{ $app_dir }}/storage {{ $new_release_dir }}/storage

    cp -R {{ $new_release_dir }}/public {{ $app_dir }}
    rm -rf {{ $new_release_dir }}/public/images
    ln -nfs {{ $app_dir }}/public/images {{ $new_release_dir }}/public/images

    echo 'Linking .env file'
    ln -nfs {{ $app_dir }}/.env {{ $new_release_dir }}/.env

    echo 'Linking current release'
    ln -nfs {{ $new_release_dir }} {{ $app_dir }}/current
    @endtask

    @task('deployment_migrate')
    echo "Migrating..."
    php {{ $new_release_dir }}/artisan migrate --force --no-interaction
    @endtask

    @task('deployment_cache')
    echo "clearing cache..."
    php {{ $new_release_dir }}/artisan cache:clear --quiet
    php {{ $new_release_dir }}/artisan config:clear
    echo "Cache cleared"
    @endtask

    @task('clean_old_releases')
    echo "Cleaning old releases ..."
    rm -rf `ls -dt {{ $app_dir }}/releases/* | tail -n +4`
    @endtask

    @task('set_permission_folder')
    echo "Set permission folder"
    cd {{ $app_dir }}
    sudo chgrp -R www-data storage public
    sudo chmod -R ug+rwx storage public

    cd {{ $app_dir }}/current
    sudo chgrp -R www-data bootstrap/cache
    sudo chmod -R ug+rwx bootstrap/cache
    @endtask


    @finished
    @slack('https://hooks.slack.com/services/T9LEZNPU4USDAKK', '#gitlab-activities', "Deployed {$server}")
    @endfinished

    @task('say_finished')
    echo "Finished..."
    @endtask



    {{--
    create .env
    create folder storage
    create folder public/images
    How to run :
    if staging
    envoy run deploy --server=staging
    if production
    envoy run deploy --server=production
    --}}