@servers(['prod' => 'ubuntu@172.26.12.217', 'dev' => 'ubuntu@smgdev.top']) @setup $repository = 'git@172.26.1.255:SMG_DEV/ERP-API.git'; $releases_dir = '/var/www/erp-api/releases'; $app_dir = '/var/www/erp-api'; $release = date('YmdHis'); $new_release_dir = $releases_dir .'/'. $release; @endsetup @task('clone_repository_dev') echo 'Cloning repository' [ -d {{ $releases_dir }} ] || mkdir {{ $releases_dir }} git clone --depth 1 --single-branch --branch development {{ $repository }} {{ $new_release_dir }} cd {{ $new_release_dir }} @endtask @task('clone_repository_prod') echo 'Cloning repository' [ -d {{ $releases_dir }} ] || mkdir {{ $releases_dir }} git clone --depth 1 --single-branch --branch production {{ $repository }} {{ $new_release_dir }} cd {{ $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" rm -rf {{ $new_release_dir }}/storage ln -nfs {{ $app_dir }}/storage {{ $new_release_dir }}/storage 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('setup_laravel') cd {{ $app_dir }}/current php artisan migrate --force php artisan storage:link php artisan db:seed --class PermissionSeeder --force @endtask @task('clean_old_releases') # This lists our releases by modification time and delete all but the 3 most recent. purging=$(ls -dt {{ $releases_dir }}/* | tail -n +5); if [ "{{ $releases_dir }}" != "" ]; then if [ "$purging" != "" ]; then echo Purging old releases: $purging; rm -rf $purging; else echo "No releases found for purging at this time"; fi fi @endtask @story('deploy',["on" => "prod"]) clone_repository_dev run_composer update_symlinks setup_laravel clean_old_releases @endstory @story('deploy-dev',["on" => "dev"]) clone_repository_prod run_composer update_symlinks setup_laravel clean_old_releases @endstory