deploy.sh 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. # One-command deploy script:
  4. # 1) Build production bundle locally
  5. # 2) Upload archive to server
  6. # 3) Extract into target directory and fix ownership
  7. SERVER_HOST="47.83.117.213"
  8. SERVER_USER="root"
  9. SERVER_PASSWORD='Bkr!Srv#Mt5@Xoh_9KpL2'
  10. REMOTE_ARCHIVE="/tmp/manager-service-font-dist.tar.gz"
  11. REMOTE_DIR="/usr/local/golden/manager-service/font"
  12. LOCAL_ARCHIVE="dist.tar.gz"
  13. if ! command -v expect >/dev/null 2>&1; then
  14. echo "Error: expect is required but not installed."
  15. exit 1
  16. fi
  17. echo "==> Installing dependencies"
  18. npm install
  19. echo "==> Building production bundle"
  20. # Pin production API origin (Vite does not override env vars already set).
  21. export VITE_API_BASE="https://ad.jinclab.com"
  22. npm run build
  23. echo "==> Packaging dist/"
  24. COPYFILE_DISABLE=1 tar -czf "${LOCAL_ARCHIVE}" dist
  25. echo "==> Uploading package to server"
  26. expect <<EOF
  27. set timeout 180
  28. spawn scp -o StrictHostKeyChecking=no "${LOCAL_ARCHIVE}" "${SERVER_USER}@${SERVER_HOST}:${REMOTE_ARCHIVE}"
  29. expect {
  30. -re "yes/no" { send "yes\r"; exp_continue }
  31. -re "password:" { send "${SERVER_PASSWORD}\r" }
  32. }
  33. expect eof
  34. EOF
  35. echo "==> Deploying on remote server"
  36. expect <<EOF
  37. set timeout 180
  38. 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}"
  39. expect {
  40. -re "yes/no" { send "yes\r"; exp_continue }
  41. -re "password:" { send "${SERVER_PASSWORD}\r" }
  42. }
  43. expect eof
  44. EOF
  45. echo "==> Verifying remote files"
  46. expect <<EOF
  47. set timeout 60
  48. spawn ssh -o StrictHostKeyChecking=no "${SERVER_USER}@${SERVER_HOST}" "ls -lah ${REMOTE_DIR}"
  49. expect {
  50. -re "yes/no" { send "yes\r"; exp_continue }
  51. -re "password:" { send "${SERVER_PASSWORD}\r" }
  52. }
  53. expect eof
  54. EOF
  55. echo "Deployment completed: ${REMOTE_DIR}"