Skip to content

πŸš€ Deploy Laravel + Vue Lebih Cepat dengan Bash Script (Alternatif CI/CD)

Hai, saya Eko, Web Developer dan pengguna laravel. Kali ini saya akan berbagi pengalaman tentang proses Deploy aplikasi di server production. Alih-alih menggunakan CI/CD saya memilih alternatif lain yaitu β€œBash Script”

Kenapa saya pilih Bash Script?

Karena malas setup CI/CD, cari yang simple dan just work. Siapkan scriptnya, run script, beres.

Memang setup CI/CD adalah investasi jangka panjang, ribet di awal setelahnya sudah otomatis jalan.

Misalnya:

Terminal window
/home/user/scripts/deploy-app.sh

#!/bin/bash
APP_DIR="/var/www/my-awesome-app"
BRANCH="main"
LOCKFILE="/tmp/deploy-app.lock"
LOGFILE="/home/user/scripts/deploy-app.log"
set -e
if [ -f "$LOCKFILE" ]; then
echo "Deploy sedang berjalan!"
exit 1
fi
trap "rm -f $LOCKFILE" EXIT
touch $LOCKFILE
exec > >(tee -i $LOGFILE)
exec 2>&1
echo "πŸš€ Deploy started at $(date)"
cd $APP_DIR
echo "πŸ“₯ Pull latest code..."
git pull origin $BRANCH
echo "πŸ“¦ Install PHP dependencies..."
composer install --no-dev --optimize-autoloader
echo "πŸ“¦ Install JS dependencies..."
pnpm install --frozen-lockfile
echo "πŸ— Build frontend..."
pnpm build
echo "πŸ—„ Run migration..."
php artisan migrate --force
echo "βš™οΈ Clear cache..."
php artisan optimize:clear
echo "⚑ Optimize..."
php artisan optimize
echo "πŸ” Reset permission cache..."
php artisan permission:cache-reset
echo "⏰ Run scheduler..."
php artisan schedule:run
echo "πŸ”„ Restart supervisor..."
sudo supervisorctl restart all
echo "βœ… Deploy selesai $(date)"

Terminal window
chmod +x /home/user/scripts/deploy-app.sh

Terminal window
/home/user/scripts/deploy-app.sh

Dan semua berjalan dengan aman.


Oh ya ada tips lagi biar lebih gampang, yaitu tambahkan alias:

Tambahkan alias:

Terminal window
alias deploy-app="/home/user/scripts/deploy-app.sh"

Sekarang cukup:

Terminal window
deploy-app