| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #!/usr/bin/env bash
- set -euo pipefail
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
- REMOTE_HOST="${DEPLOY_HOST:-129.28.197.250}"
- REMOTE_USER="${DEPLOY_USER:-root}"
- REMOTE_PASSWORD="${DEPLOY_PASSWORD:-HUIchuang@2020#\$123..Server6}"
- REMOTE_TARGET_DIR="${DEPLOY_TARGET_DIR:-/usr/local/nginx/video-script-admin}"
- BUILD_COMMAND="${BUILD_COMMAND:-npm run build}"
- require_command() {
- if ! command -v "$1" >/dev/null 2>&1; then
- echo "Missing required command: $1" >&2
- exit 1
- fi
- }
- require_command npm
- require_command tar
- require_command sshpass
- require_command ssh
- require_command scp
- cd "${PROJECT_ROOT}"
- echo "==> Building project"
- ${BUILD_COMMAND}
- if [ ! -d "dist" ]; then
- echo "Build output dist/ not found" >&2
- exit 1
- fi
- TIMESTAMP="$(date +"%Y%m%d%H%M%S")"
- ARCHIVE_NAME="video-script-admin-${TIMESTAMP}.tar.gz"
- LOCAL_ARCHIVE="/tmp/${ARCHIVE_NAME}"
- REMOTE_ARCHIVE="/tmp/${ARCHIVE_NAME}"
- cleanup() {
- rm -f "${LOCAL_ARCHIVE}"
- }
- trap cleanup EXIT
- echo "==> Packing dist/"
- tar -C "dist" -czf "${LOCAL_ARCHIVE}" .
- echo "==> Uploading package to ${REMOTE_USER}@${REMOTE_HOST}"
- sshpass -p "${REMOTE_PASSWORD}" scp -o StrictHostKeyChecking=no "${LOCAL_ARCHIVE}" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_ARCHIVE}"
- echo "==> Deploying to ${REMOTE_TARGET_DIR}"
- sshpass -p "${REMOTE_PASSWORD}" ssh -o StrictHostKeyChecking=no "${REMOTE_USER}@${REMOTE_HOST}" \
- "REMOTE_ARCHIVE='${REMOTE_ARCHIVE}' REMOTE_TARGET_DIR='${REMOTE_TARGET_DIR}' bash -s" <<'EOF'
- set -euo pipefail
- mkdir -p "${REMOTE_TARGET_DIR}"
- find "${REMOTE_TARGET_DIR}" -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +
- tar -xzf "${REMOTE_ARCHIVE}" -C "${REMOTE_TARGET_DIR}"
- rm -f "${REMOTE_ARCHIVE}"
- EOF
- echo "==> Deployment complete"
|