diff --git a/deploy-test.sh b/deploy-test.sh index 9fd082b..c198121 100644 --- a/deploy-test.sh +++ b/deploy-test.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Script deploy ke VPS +# Script deploy semua binary hasil build Rust (untuk Linux) set -e @@ -7,35 +7,43 @@ REMOTE_USER="asephs" REMOTE_HOST="70.153.9.42" REMOTE_PATH="/home/asephs/imphnen-backend-service" -# Build project -# taskset -c 0,1 cargo build --release -j 2 +# Build release binary +echo "🔧 Building Rust project..." cargo build --release -# Rsync hasil build dan file yang diperlukan -rsync -avz --delete \ - target/release/ \ + +# Filter hanya file executable tanpa ekstensi .exe, .rlib, atau .d +BINARIES=$(find target/release -maxdepth 1 -type f ! -name "*.exe" ! -name "*.rlib" ! -name "*.d") + +if [ -z "$BINARIES" ]; then + echo "❌ Tidak ada binary Linux (.exe/.rlib/.d diabaikan)" + exit 1 +fi + +# Upload semua binary yang valid ke server +echo "🚀 Mengirim binary ke server..." +rsync -avz --compress-level=9 --progress \ + $BINARIES \ $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/target/release/ -# Sync file konfigurasi dan source code (jika perlu) -rsync -avz --delete \ - imphnen-backend/ \ - $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/imphnen-backend/ - -rsync -avz --delete \ - docker-compose.yml Dockerfile \ - $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/ - -# Tambahkan file lain jika diperlukan +# Jalankan ulang service utama di VPS +echo "♻️ Restart service utama di server..." ssh $REMOTE_USER@$REMOTE_HOST << 'EOF' +set -e cd /home/asephs/imphnen-backend-service -export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" -export PATH=$PATH:/root/.local/share/pnpm -export PATH=$PATH:/home/asephs/.nvm/versions/node/v22.17.1/bin -export PATH=$PATH:/home/asephs/.bun/bin/bun - +export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" if [ -f ~/.bashrc ]; then source ~/.bashrc fi -pm2 restart 4 --update-env + +# Pastikan semua binary bisa dieksekusi +chmod +x target/release/* + +# Restart service utama (misalnya api.d) +if pm2 list | grep -q api; then + pm2 restart api --update-env +else + pm2 start target/release/api.d --name api +fi EOF -echo "Deploy selesai ke $REMOTE_HOST:$REMOTE_PATH" +echo "✅ Deploy semua binary Linux selesai ke $REMOTE_HOST:$REMOTE_PATH"