deploy.sh 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/usr/bin/env bash
  2. # 构建并发布到 /srv/agent-server/app,同步技能目录,重启服务。
  3. # 用法:deploy/deploy.sh(需要 sudo 权限;首次部署前先执行 sudo deploy/install.sh)
  4. set -euo pipefail
  5. cd "$(dirname "$0")/.."
  6. ROOT=/srv/agent-server
  7. pnpm install --frozen-lockfile
  8. pnpm -r build
  9. node scripts/build-sdk.mjs
  10. STAGE=$(mktemp -d)
  11. trap 'rm -rf "$STAGE"' EXIT
  12. pnpm --filter @agent-server/server deploy --prod "$STAGE/server" >/dev/null
  13. sudo rsync -a --delete "$STAGE/server/" "$ROOT/app/server/"
  14. sudo rsync -a --delete apps/admin/dist/ "$ROOT/app/admin/"
  15. # SDK 包保留旧版本(业务平台可能锁定在旧版本),npm 仓库 /npm/ 按目录中的全部版本提供
  16. sudo mkdir -p "$ROOT/app/sdk"
  17. sudo rsync -a dist-sdk/ "$ROOT/app/sdk/"
  18. sudo rm -f "$ROOT/app/sdk/agent-skills.tgz" "$ROOT/app/sdk/index.json" # 旧的 /sdk/ 分发方式留下的文件
  19. sudo rsync -a --delete skills/ "$ROOT/skills/"
  20. sudo chown -R root:root "$ROOT/app" "$ROOT/skills"
  21. sudo chmod -R a+rX "$ROOT/app" "$ROOT/skills"
  22. # 服务可写目录与 unit 文件(新增目录或修改 unit 后,不必重跑 install.sh)
  23. sudo install -d -o agentsvc -g agentsvc -m 0700 "$ROOT/managed-skills"
  24. if ! sudo cmp -s deploy/agent-server.service /etc/systemd/system/agent-server.service; then
  25. sudo install -m 0644 deploy/agent-server.service /etc/systemd/system/agent-server.service
  26. sudo systemctl daemon-reload
  27. fi
  28. sudo systemctl restart agent-server
  29. for _ in $(seq 1 20); do
  30. if curl -sf http://127.0.0.1:8787/healthz >/dev/null; then
  31. echo "部署完成:http://127.0.0.1:8787/admin/"
  32. exit 0
  33. fi
  34. sleep 0.5
  35. done
  36. echo "服务没有正常启动,查看日志:journalctl -u agent-server -n 50" >&2
  37. exit 1