@setup require __DIR__.'/vendor/autoload.php'; $dotenv = Dotenv\Dotenv::createImmutable(__DIR__, '.env.prod'); $dotenv->load(); $config = new \StdClass; $config->test_path = "/var/www/html/portal"; $config->prod_path = "/var/www/html/portal"; $config->test_branch = "development"; $config->prod_branch = "production"; $date = ( new DateTime )->format('Y-m-d H:i:s'); $dateSave = ( new DateTime )->format('Ymd-Hi'); $db_host = $_ENV['DB_DATABASE']; $db_user = $_ENV['DB_USERNAME']; $db_pass = $_ENV['DB_PASSWORD']; $rsync = $_ENV['RSYNC_SAV']; $slack = $_ENV['SLACK_URL']; @endsetup @servers(['test' => ['raspitest'], 'prod' => ['raspigate']]) @story('deploy') sql-backup deploy-prod @endstory @task('sql-backup', ['on' => ['prod']]) cd {{ $config->prod_path }} mysqldump --user={{ $db_user }} --password={{ $db_pass }} -B {{ $db_host }} > storage/logs/database/save-{{ $db_host }}-{{ $dateSave }}.sql scp -p storage/logs/database/save-{{ $db_host }}-{{ $dateSave }}.sql {{ $rsync }} @endtask @task('deploy-test', ['on' => ['test']]) cd {{ $config->test_path }} {{-- php artisan down--}} {{-- git reset --hard HEAD--}} {{-- git pull origin {{ $config->test_branch }}--}} {{-- composer install--}} {{-- npm install--}} {{-- npm run production--}} {{-- php artisan migrate --force--}} {{-- php artisan cache:clear--}} {{-- php artisan config:cache--}} {{-- php artisan view:clear--}} {{-- php artisan optimize--}} {{-- php artisan up--}} @endtask @task('deploy-prod', ['on' => ['prod']]) cd {{ $config->prod_path }} php artisan down git reset --hard HEAD git pull origin {{ $config->prod_branch }} composer install --no-dev npm install --only=dependencies npm run production --only=dependencies php artisan migrate --force php artisan optimize php artisan up @endtask @finished @slack($slack, '#envoy', "Deployment on prod: {$date} complete") @endfinished