@servers(['dev' => 'barasysr@167.86.89.118'])
@setup
$repository = 'git@gitlab.com:bit-01/albaraka-sys.git';
$releases_dir = '/home/barasysr/releases/'.$branch;
$app_dir = '/home/barasysr/'.$branch;
$release = date('YmdHis');
$new_release_dir = $releases_dir .'/'. $release;
$devPath = '/home/barasysr/dev/current';
// Validate branch
if (!in_array($branch, ['main', 'dev'])) {
throw new Exception('Invalid branch. Only "main" and "dev" branches are allowed.');
}
@endsetup
@story('deploy')
clone_repository
run_composer
update_symlinks
@endstory
@task('clone_repository')
echo '🚀 Cloning repository...'
[ -d {{ $releases_dir }} ] || mkdir -p {{ $releases_dir }}
git clone --depth 1 -b {{ $branch }} {{ $repository }} {{ $new_release_dir }}
echo '✅ Repository cloned successfully!
'
@endtask
@task('run_composer')
echo "🎯 Starting deployment ({{$branch}}--{{ $release }})..."
cd {{ $new_release_dir }}
echo '📦 Installing Composer dependencies...'
composer install --prefer-dist --no-scripts -q -o
echo '✅ Composer dependencies installed!
'
@endtask
@task('update_symlinks')
echo "🔗 Linking storage directory..."
rm -rf {{ $new_release_dir }}/storage
ln -nfs {{ $app_dir }}/storage {{ $new_release_dir }}/storage
echo '✅ Storage directory linked!
'
echo '🔐 Linking .env file...'
ln -nfs {{ $app_dir }}/.env {{ $new_release_dir }}/.env
echo '✅ .env file linked!
'
echo '⛓️ Linking current release...'
ln -nfs {{ $new_release_dir }} {{ $app_dir }}/current
echo '✅ Current release linked!
'
cd {{ $new_release_dir }}
if [ "{{ $branch }}" = "main" ]; then
ln -s {{ $devPath }} ./dev.barasys.com
fi
echo "🔄 Migrating Database..."
php artisan migrate --force --path="database/migrations/new/"
echo '✅ Database migrations complete!
'
echo "🌱 Seeding Database..."
php artisan db:seed
echo '✅ Database seeded successfully!
'
echo "🎉 Deployment complete! 🎉"
@endtask