@servers(['vps1' => 'rann-deployer@vps1.sl-projects.com']) @setup $repository = 'ssh://git@gitlab.sl-projects.com:2222/SofianeLasri/rann-graphic-design-website.git'; $releases_dir = '/home/serveur-web/rann-graphic-design.fr/releases'; $app_dir = '/home/serveur-web/rann-graphic-design.fr'; $release = date('YmdHis'); $new_release_dir = $releases_dir .'/'. $release; @endsetup @story('deploy') clone_repository run_composer run_npm update_symlinks migration clean_old_releases @endstory @task('clone_repository') echo 'Cloning repository' [ -d {{ $releases_dir }} ] || mkdir {{ $releases_dir }} git clone --depth 1 {{ $repository }} {{ $new_release_dir }} cd {{ $new_release_dir }} git reset --hard {{ $commit }} @endtask @task('run_composer') echo "Starting deployment ({{ $release }})" cd {{ $new_release_dir }} composer install --no-scripts -o @endtask @task('run_npm') echo "Running npm install" cd {{ $new_release_dir }} npm install echo "Building Vite" npm run build @endtask @task('update_symlinks') echo "Checking if storage directory exists" if [ ! -d {{ $app_dir }}/storage ]; then echo "Creating storage directory" mkdir -p {{ $app_dir }}/storage mkdir -p {{ $app_dir }}/storage/app mkdir -p {{ $app_dir }}/storage/framework mkdir -p {{ $app_dir }}/storage/framework/cache mkdir -p {{ $app_dir }}/storage/framework/sessions mkdir -p {{ $app_dir }}/storage/framework/views mkdir -p {{ $app_dir }}/storage/logs fi echo "Linking storage directory" rm -rf {{ $new_release_dir }}/storage ln -nfs {{ $app_dir }}/storage {{ $new_release_dir }}/storage echo "Checking if bootstrap/cache directory exists" if [ ! -d {{ $app_dir }}/bootstrap/cache ]; then echo "Creating bootstrap/cache directory" mkdir -p {{ $app_dir }}/bootstrap/cache fi echo "Linking bootstrap/cache directory" rm -rf {{ $new_release_dir }}/bootstrap/cache ln -nfs {{ $app_dir }}/bootstrap/cache {{ $new_release_dir }}/bootstrap/cache echo 'Checking if .env file exists' if [ ! -f {{ $app_dir }}/.env ]; then echo 'Creating .env file' cp {{ $new_release_dir }}/.env.example {{ $app_dir }}/.env fi 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('migration') cd {{ $new_release_dir }} php artisan down echo "Migrating the database" php artisan migrate --force echo "Clearing cache" php artisan optimize:clear php artisan storage:link php artisan up php artisan queue:restart @endtask @task('clean_old_releases') echo "Cleaning old releases" cd {{ $releases_dir }} releases=($(ls -dt */)) total_releases=${#releases[@]} if [ $total_releases -gt 3 ]; then echo "Total releases: $total_releases. Deleting old releases..." for ((i=3; i<$total_releases; i++)); do echo "Deletion of : ${releases[$i]}" rm -rf "${releases[$i]}" done else echo "No old releases to delete" fi @endtask