93 lines
2.3 KiB
Bash
Executable File
93 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$APP_DIR"
|
|
|
|
PHP_BIN="${PHP_BIN:-php}"
|
|
COMPOSER_BIN="${COMPOSER_BIN:-composer}"
|
|
NPM_BIN="${NPM_BIN:-npm}"
|
|
APP_ENVIRONMENT="${APP_ENVIRONMENT:-production}"
|
|
RUN_SEED="${RUN_SEED:-false}"
|
|
INSTALL_NODE_MODULES="${INSTALL_NODE_MODULES:-true}"
|
|
COMPOSER_FLAGS_DEFAULT="--no-dev --optimize-autoloader"
|
|
COMPOSER_FLAGS="${COMPOSER_FLAGS:-$COMPOSER_FLAGS_DEFAULT}"
|
|
|
|
if [[ "$APP_ENVIRONMENT" != "production" ]]; then
|
|
COMPOSER_FLAGS="${COMPOSER_FLAGS_NON_PROD:-}"
|
|
fi
|
|
|
|
log() {
|
|
printf '\n[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$1"
|
|
}
|
|
|
|
abort() {
|
|
printf '\n[ERROR] %s\n' "$1" >&2
|
|
exit 1
|
|
}
|
|
|
|
require_cmd() {
|
|
command -v "$1" >/dev/null 2>&1 || abort "Command not found: $1"
|
|
}
|
|
|
|
log "Memulai deploy di: $APP_DIR"
|
|
|
|
require_cmd "$PHP_BIN"
|
|
require_cmd "$COMPOSER_BIN"
|
|
require_cmd "$NPM_BIN"
|
|
|
|
[[ -f artisan ]] || abort "File artisan tidak ditemukan. Pastikan script dijalankan dari root project Laravel."
|
|
[[ -f .env ]] || abort "File .env tidak ditemukan. Copy .env.example menjadi .env terlebih dahulu."
|
|
|
|
log "Menampilkan versi tool"
|
|
$PHP_BIN -v | head -n 1
|
|
$COMPOSER_BIN --version
|
|
$NPM_BIN --version
|
|
|
|
log "Install/update dependency Composer"
|
|
if [[ -n "$COMPOSER_FLAGS" ]]; then
|
|
$COMPOSER_BIN install $COMPOSER_FLAGS
|
|
else
|
|
$COMPOSER_BIN install
|
|
fi
|
|
|
|
if [[ "$INSTALL_NODE_MODULES" == "true" ]]; then
|
|
log "Install dependency frontend"
|
|
$NPM_BIN install
|
|
fi
|
|
|
|
log "Build asset frontend"
|
|
$NPM_BIN run build
|
|
|
|
log "Pastikan APP_KEY tersedia"
|
|
$PHP_BIN artisan key:generate --force
|
|
|
|
log "Jalankan migration"
|
|
$PHP_BIN artisan migrate --force
|
|
|
|
if [[ "$RUN_SEED" == "true" ]]; then
|
|
log "Jalankan seeder"
|
|
$PHP_BIN artisan db:seed --force
|
|
fi
|
|
|
|
log "Pastikan symbolic link storage tersedia"
|
|
$PHP_BIN artisan storage:link || true
|
|
|
|
log "Bersihkan cache Laravel"
|
|
$PHP_BIN artisan optimize:clear
|
|
|
|
if [[ "$APP_ENVIRONMENT" == "production" ]]; then
|
|
log "Cache config, route, dan view untuk production"
|
|
$PHP_BIN artisan config:cache
|
|
$PHP_BIN artisan route:cache
|
|
$PHP_BIN artisan view:cache
|
|
fi
|
|
|
|
log "Deploy selesai"
|
|
printf '\nChecklist manual setelah deploy:\n'
|
|
printf -- '- Cek halaman login\n'
|
|
printf -- '- Cek dashboard setelah login\n'
|
|
printf -- '- Cek branding/logo\n'
|
|
printf -- '- Cek portal publik\n'
|
|
printf -- '- Cek file upload dan dokumen lama\n'
|