|
|
@@ -0,0 +1,65 @@
|
|
|
+#!/usr/bin/env bash
|
|
|
+set -euo pipefail
|
|
|
+
|
|
|
+# One-command deploy script:
|
|
|
+# 1) Build production bundle locally
|
|
|
+# 2) Upload archive to server
|
|
|
+# 3) Extract into target directory and fix ownership
|
|
|
+
|
|
|
+SERVER_HOST="47.83.117.213"
|
|
|
+SERVER_USER="root"
|
|
|
+SERVER_PASSWORD='Bkr!Srv#Mt5@Xoh_9KpL2'
|
|
|
+REMOTE_ARCHIVE="/tmp/manager-service-font-dist.tar.gz"
|
|
|
+REMOTE_DIR="/usr/local/golden/manager-service/font"
|
|
|
+LOCAL_ARCHIVE="dist.tar.gz"
|
|
|
+
|
|
|
+if ! command -v expect >/dev/null 2>&1; then
|
|
|
+ echo "Error: expect is required but not installed."
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+echo "==> Installing dependencies"
|
|
|
+npm install
|
|
|
+
|
|
|
+echo "==> Building production bundle"
|
|
|
+# Pin production API origin (Vite does not override env vars already set).
|
|
|
+export VITE_API_BASE="https://ad.jinclab.com"
|
|
|
+npm run build
|
|
|
+
|
|
|
+echo "==> Packaging dist/"
|
|
|
+COPYFILE_DISABLE=1 tar -czf "${LOCAL_ARCHIVE}" dist
|
|
|
+
|
|
|
+echo "==> Uploading package to server"
|
|
|
+expect <<EOF
|
|
|
+set timeout 180
|
|
|
+spawn scp -o StrictHostKeyChecking=no "${LOCAL_ARCHIVE}" "${SERVER_USER}@${SERVER_HOST}:${REMOTE_ARCHIVE}"
|
|
|
+expect {
|
|
|
+ -re "yes/no" { send "yes\r"; exp_continue }
|
|
|
+ -re "password:" { send "${SERVER_PASSWORD}\r" }
|
|
|
+}
|
|
|
+expect eof
|
|
|
+EOF
|
|
|
+
|
|
|
+echo "==> Deploying on remote server"
|
|
|
+expect <<EOF
|
|
|
+set timeout 180
|
|
|
+spawn ssh -o StrictHostKeyChecking=no "${SERVER_USER}@${SERVER_HOST}" "mkdir -p ${REMOTE_DIR} && rm -rf ${REMOTE_DIR}/* && tar -xzf ${REMOTE_ARCHIVE} -C ${REMOTE_DIR} --strip-components=1 && rm -f ${REMOTE_DIR}/._* ${REMOTE_DIR}/assets/._* && chown -R root:root ${REMOTE_DIR}"
|
|
|
+expect {
|
|
|
+ -re "yes/no" { send "yes\r"; exp_continue }
|
|
|
+ -re "password:" { send "${SERVER_PASSWORD}\r" }
|
|
|
+}
|
|
|
+expect eof
|
|
|
+EOF
|
|
|
+
|
|
|
+echo "==> Verifying remote files"
|
|
|
+expect <<EOF
|
|
|
+set timeout 60
|
|
|
+spawn ssh -o StrictHostKeyChecking=no "${SERVER_USER}@${SERVER_HOST}" "ls -lah ${REMOTE_DIR}"
|
|
|
+expect {
|
|
|
+ -re "yes/no" { send "yes\r"; exp_continue }
|
|
|
+ -re "password:" { send "${SERVER_PASSWORD}\r" }
|
|
|
+}
|
|
|
+expect eof
|
|
|
+EOF
|
|
|
+
|
|
|
+echo "Deployment completed: ${REMOTE_DIR}"
|