@servers(['prod' => 'ubuntu@172.26.12.217', 'dev' => 'ubuntu@smgdev.top']) @setup $repository = 'git@172.26.1.255:SMG_DEV/ECOMMERCE.git'; $folder = isset($folder) ? $folder : 'store'; $releases_dir = '/var/www/'.$folder.'/releases'; $app_dir = '/var/www/'.$folder; $release = date('YmdHis'); $branch = isset($branch) ? $branch : 'production'; $new_release_dir = $releases_dir .'/'. $release; $php_bin = 'php8.2'; $composer_bin = 'php8.2 /usr/local/bin/composer' @endsetup @task('clone_repository') echo 'Cloning repository' [ -d {{ $releases_dir }} ] || mkdir {{ $releases_dir }} git clone --depth 1 --single-branch --branch {{ $branch }} {{ $repository }} {{ $new_release_dir }} cd {{ $new_release_dir }} @endtask @task('run_composer') echo "Starting deployment ({{ $release }})" cd {{ $new_release_dir }} {{ $composer_bin}} install --prefer-dist --no-scripts -q -o npm install --legacy-peer-deps npm run build @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_bin}} artisan storage:link @endtask @task('fix_permissions') sudo chown -R ubuntu:www-data {{ $new_release_dir }} sudo find {{ $new_release_dir }} -type f -exec chmod 664 {} \; sudo find {{ $new_release_dir }} -type d -exec chmod 775 {} \; @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 run_composer fix_permissions update_symlinks setup_laravel clean_old_releases @endstory @story('deploy-dev',["on" => "dev"]) clone_repository run_composer fix_permissions update_symlinks setup_laravel clean_old_releases @endstory