deploy-offline.sh 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/usr/bin/env sh
  2. # Linux offline deployment using the extracted single release archive.
  3. set -eu
  4. CALLER_DIR=$(pwd)
  5. case "$0" in
  6. */*) SCRIPT_DIR=${0%/*} ;;
  7. *) SCRIPT_DIR=. ;;
  8. esac
  9. REPO_ROOT=$(CDPATH= cd -- "$SCRIPT_DIR" && pwd)
  10. cd "$REPO_ROOT"
  11. ACTION=${1:-deploy}
  12. case "$ACTION" in
  13. help|-h|--help)
  14. echo 'Usage: sh deploy-offline.sh [deploy|import-knowledge|restart|start|stop|status|check-milvus|check-redis|check-dms|check-deepseek|check-qcc "company full name"|check "company full name"]'
  15. echo 'deploy: use the preinstalled .venv and packaged snapshot; never download'
  16. echo 'Usage: sh deploy-offline.sh import-knowledge [ZIP_PATH [DATABASE]]'
  17. echo 'import-knowledge: replace the full snapshot, or only the named library; preserve old versions'
  18. echo 'DATABASE: policy | finance | qa | article | service_guide | service_catalog'
  19. echo 'ZIP_PATH defaults to output/knowledge-snapshot.zip; relative paths use the caller directory'
  20. echo 'Configuration and prerequisites: docs/deployment.md'
  21. exit 0 ;;
  22. deploy|import-knowledge|restart|start|stop|status|serve|check|check-milvus|check-redis|check-dms|check-deepseek|check-qcc) ;;
  23. *) echo 'Unknown offline deployment action.' >&2; exit 2 ;;
  24. esac
  25. case "$ACTION" in
  26. check|check-qcc)
  27. [ "$#" -eq 2 ] && [ -n "$2" ] || { echo 'This check requires one exact company name.' >&2; exit 2; } ;;
  28. import-knowledge)
  29. [ "$#" -le 3 ] || { echo 'Usage: import-knowledge [ZIP_PATH [DATABASE]]' >&2; exit 2; }
  30. if [ "$#" -ge 2 ]; then
  31. [ -n "$2" ] || { echo 'ZIP_PATH must not be empty.' >&2; exit 2; }
  32. case "$2" in /*) KNOWLEDGE_ZIP=$2 ;; *) KNOWLEDGE_ZIP=$CALLER_DIR/$2 ;; esac
  33. fi
  34. if [ "$#" -eq 3 ]; then
  35. case "$3" in policy|finance|qa|article|service_guide|service_catalog) ;;
  36. *) echo 'Unknown knowledge library.' >&2; exit 2 ;;
  37. esac
  38. fi ;;
  39. *) [ "$#" -le 1 ] || { echo 'Only one action is accepted.' >&2; exit 2; } ;;
  40. esac
  41. [ "$(uname -s)" = Linux ] || { echo 'deploy-offline.sh requires Linux.' >&2; exit 2; }
  42. export DEPLOY_OFFLINE=1 HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1
  43. export EMBEDDING_MODEL_PATH="$REPO_ROOT/models/bge-large-zh-v1.5"
  44. SERVICE_PYTHON="$REPO_ROOT/.venv/bin/python"
  45. [ -x "$SERVICE_PYTHON" ] || { echo 'Offline deployment requires the preinstalled .venv/bin/python.' >&2; exit 1; }
  46. case "$ACTION" in
  47. check|check-qcc) exec "$SERVICE_PYTHON" scripts/deploy.py "$ACTION" "$2" ;;
  48. import-knowledge)
  49. if [ "$#" -eq 3 ]; then
  50. exec "$SERVICE_PYTHON" scripts/deploy.py "$ACTION" "$KNOWLEDGE_ZIP" "$3"
  51. elif [ "$#" -eq 2 ]; then
  52. exec "$SERVICE_PYTHON" scripts/deploy.py "$ACTION" "$KNOWLEDGE_ZIP"
  53. fi ;;
  54. esac
  55. exec "$SERVICE_PYTHON" scripts/deploy.py "$ACTION"