diff --git a/Envoy.blade.php b/Envoy.blade.php new file mode 100644 index 0000000..56392e8 --- /dev/null +++ b/Envoy.blade.php @@ -0,0 +1,75 @@ +@servers(['prod' => 'ubuntu@172.26.12.217', 'dev' => 'ubuntu@smgdev.top']) + +@setup +$repository = 'git@172.26.1.255:SMG_DEV/PXG_2026_API.git'; +$folder = isset($folder) ? $folder : 'tournament/api'; +$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; +@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 install --prefer-dist --no-scripts -q -o +@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 artisan migrate --force +php artisan storage:link +@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 +update_symlinks +setup_laravel +clean_old_releases +@endstory + + +@story('deploy-dev',["on" => "dev"]) +clone_repository +run_composer +update_symlinks +setup_laravel +clean_old_releases +@endstory diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..f52a760 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,29 @@ +pipeline { + agent any + stages + { + stage("Deploy Dev"){ + when { + branch 'development' + } + steps { + sshagent(credentials: ['dev-id_rsa']) { + sh "composer install" + sh "./vendor/bin/envoy run deploy-dev --branch=development" + } + } + } + + stage("Deploy Prod"){ + when { + branch 'production' + } + steps { + sshagent(credentials: ['dev-id_rsa']) { + sh "composer install" + sh "./vendor/bin/envoy run deploy --branch=production" + } + } + } + } +}