@servers(['web' => 'softease@192.168.200.12']) @setup $dir = "/home/softease/www/Support"; $shared = $dir . '/shared'; $repo = $dir . '/repo'; $release = $dir . "/releases/" . date('YmdHis'); $current = $dir . '/current'; $releases = 3; $user = "maxime.goncalves"; $password = "p3dkx4zggpkxpcoewi4td7tz676ozykacj7uqgmh3gwcjch3twna"; $remote = "https://".$user.":".$password."@dev.azure.com/Softease/Support%20V2/_git/Support%20V2"; @endsetup @task('prepare') {{-- On créer le dossier share --}} mkdir -p {{$shared}}; {{-- On clone le repository dans le dossier repo --}} git clone {{ $remote }} {{ $repo }}; cd {{ $repo }}; {{-- On install les dépendances --}} composer install --no-dev --no-progress; npm install --only=prod; @endtask @task('deploy') {{--CREATE RELEASE--}} mkdir -p {{ $release }}; cd {{ $repo }}; git pull {{$remote}}; git archive master | tar -x -C {{ $release }}; mkdir -p {{ $shared }}/storage; mkdir -p {{ $shared }}/storage/framework/sessions; mkdir -p {{ $shared }}/storage/framework/views; mkdir -p {{ $shared }}/storage/framework/cache; rm -rf {{ $release }}/storage; cd {{ $release }}; ln -nfs {{ $shared }}/storage storage; echo "création de {{ $release }}"; {{--COMPOSER--}} mkdir -p {{ $shared }}/vendor; ln -s {{$shared}}/vendor {{ $release }}/vendor; cd {{$release}}; composer update --no-dev --no-progress; {{--NPM--}} mkdir -p {{ $shared }}/node_modules; ln -s {{$shared}}/node_modules {{ $release }}/node_modules; cd {{$release}}; npm install --only=prod; {{--Current--}} rm -f {{$current}}; ln -s {{ $release }} {{ $current }}; ls {{ $dir }}/releases | sort -r | tail -n +{{$releases + 1 }} | xargs -I{} -r rm -rf {{ $dir }}/releases/{}; echo "lien : {{$current}} -> {{$releases}}"; php artisan storage:link {{-- Lien symbolique vers le fichier .env--}} ln -s {{ $shared }}/.env {{ $release }}/.env; @endtask {{-- Ne sont pas utilisées--}} @task('composer') mkdir -p {{ $shared }}/vendor; cd {{$release}}; composer update --no-dev --no-progress; ln -s {{$shared}}/vendor {{ $release }}/vendor; @endtask @task('npm') mkdir -p {{ $shared }}/node_modules; ln -s {{$shared}}/node_modules {{ $release }}/node_modules; cd {{$release}}; npm install --only=prod; @endtask @task('linkcurrent') rm -f {{$current}}; ln -s {{ $release }} {{ $current }}; ln {{ $dir }}/releases | sort -r | tail -n +{{$releases + 1 }} | xargs -I{} -r rm -rf {{ $dir }}/releases/{}; echo "lien : {{$current}} -> {{$releases}}; @endtask @task('rollback') rm -f {{$current}}; ls {{ $dir }}/releases | tail -n 2 | head -n 1 | xargs -I{} -r ln -s {{$dir}}/releases/{} {{$current}}; @endtask