refactor: Update deployment script for Rust binaries with improved comments and error handling

This commit is contained in:
MythEclipse
2025-10-28 21:58:49 +07:00
parent fbfe3dcd51
commit 98c46611fb
+31 -23
View File
@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
# Script deploy ke VPS # Script deploy semua binary hasil build Rust (untuk Linux)
set -e set -e
@@ -7,35 +7,43 @@ REMOTE_USER="asephs"
REMOTE_HOST="70.153.9.42" REMOTE_HOST="70.153.9.42"
REMOTE_PATH="/home/asephs/imphnen-backend-service" REMOTE_PATH="/home/asephs/imphnen-backend-service"
# Build project # Build release binary
# taskset -c 0,1 cargo build --release -j 2 echo "🔧 Building Rust project..."
cargo build --release cargo build --release
# Rsync hasil build dan file yang diperlukan
rsync -avz --delete \ # Filter hanya file executable tanpa ekstensi .exe, .rlib, atau .d
target/release/ \ 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/ $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/target/release/
# Sync file konfigurasi dan source code (jika perlu) # Jalankan ulang service utama di VPS
rsync -avz --delete \ echo "♻️ Restart service utama di server..."
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
ssh $REMOTE_USER@$REMOTE_HOST << 'EOF' ssh $REMOTE_USER@$REMOTE_HOST << 'EOF'
set -e
cd /home/asephs/imphnen-backend-service 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="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/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
if [ -f ~/.bashrc ]; then if [ -f ~/.bashrc ]; then
source ~/.bashrc source ~/.bashrc
fi 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 EOF
echo "Deploy selesai ke $REMOTE_HOST:$REMOTE_PATH" echo "Deploy semua binary Linux selesai ke $REMOTE_HOST:$REMOTE_PATH"