refactor: Update deployment script for Rust binaries with improved comments and error handling
This commit is contained in:
+31
-23
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user