@servers(["web" => "ubuntu@{$serverIp}"]) @setup $repository = 'https://ci:glpat-UJ28ePKWez4sFDY4t_7T@gitlab.bucle.dev/bucle/greencard/greencard-agent-api.git'; $release = date('YmdHis'); $releases_dir = '/var/www/greencard-agent-api/releases'; $app_dir = '/var/www/greencard-agent-api'; $new_release_dir = $releases_dir .'/'. $release; @endsetup @story('deploy') clone_repository run_npm_install update_symlinks restart_pm2 restart_nginx remove_old_builds @endstory @task('clone_repository') echo 'Cloning repository from git environment:: ({{$env}}), branch:: ({{$branch}}), tag:: ({{$tag}}) at ({{ $release }})' echo 'New App Directory :: ({{$app_dir}})' echo 'New Release Directory :: ({{$new_release_dir}})' [ -d {{ $app_dir }} ] || mkdir {{ $app_dir }} [ -d {{ $releases_dir }} ] || mkdir {{ $releases_dir }} @if($env === 'production') @if($tag) git clone --depth 1 --branch {{ $tag }} {{ $repository }} {{ $new_release_dir }} @else git clone --depth 1 --branch {{ $branch }} {{ $repository }} {{ $new_release_dir }} @endif @else git clone --depth 1 --branch {{ $branch }} {{ $repository }} {{ $new_release_dir }} @endif echo 'git clone --depth 1 --branch {{ $branch }} {{ $repository }} {{ $new_release_dir }}' echo 'Changing directory to ({{$new_release_dir}})' cd {{ $new_release_dir }} git reset --hard {{ $commit }} @endtask @task('run_npm_install') echo "Starting deployment ({{ $release }})" cd {{ $new_release_dir }} npm install @endtask @task('creating_build') echo "Starting build ({{ $release }})" cd {{ $new_release_dir }} npm run build @endtask @task('update_symlinks') echo 'Linking .env file' ln -nfs {{ $app_dir }}/.env {{ $new_release_dir }}/.env ln -nfs {{ $app_dir }}/.env.development.local {{ $new_release_dir }}/.env.development.local ln -nfs {{ $app_dir }}/.env.production.local {{ $new_release_dir }}/.env.production.local echo 'Linking current release' ln -nfs {{ $new_release_dir }} {{ $app_dir }}/current @endtask @task('restart_pm2') cd {{ $new_release_dir }} echo "Generating prisma ({{ $release }})" npm run prisma:generate pm2 restart greencard-agent-api @endtask @task('restart_nginx') sudo service nginx restart @endtask @task('remove_old_builds') sudo find {{ $releases_dir }} -mindepth 1 ! -regex '^{{ $new_release_dir }}\(/.*\)?' -delete @endtask