#!/usr/bin/env bash # 构建并发布到 /srv/agent-server/app,同步技能目录,重启服务。 # 用法:deploy/deploy.sh(需要 sudo 权限;首次部署前先执行 sudo deploy/install.sh) set -euo pipefail cd "$(dirname "$0")/.." ROOT=/srv/agent-server pnpm install --frozen-lockfile pnpm -r build node scripts/build-sdk.mjs STAGE=$(mktemp -d) trap 'rm -rf "$STAGE"' EXIT pnpm --filter @agent-server/server deploy --prod "$STAGE/server" >/dev/null sudo rsync -a --delete "$STAGE/server/" "$ROOT/app/server/" sudo rsync -a --delete apps/admin/dist/ "$ROOT/app/admin/" # SDK 包保留旧版本(业务平台可能锁定在旧版本),只更新 index.json 指向最新 sudo mkdir -p "$ROOT/app/sdk" sudo rsync -a dist-sdk/ "$ROOT/app/sdk/" sudo rsync -a --delete skills/ "$ROOT/skills/" sudo chown -R root:root "$ROOT/app" "$ROOT/skills" sudo chmod -R a+rX "$ROOT/app" "$ROOT/skills" # 服务可写目录与 unit 文件(新增目录或修改 unit 后,不必重跑 install.sh) sudo install -d -o agentsvc -g agentsvc -m 0700 "$ROOT/managed-skills" if ! sudo cmp -s deploy/agent-server.service /etc/systemd/system/agent-server.service; then sudo install -m 0644 deploy/agent-server.service /etc/systemd/system/agent-server.service sudo systemctl daemon-reload fi sudo systemctl restart agent-server for _ in $(seq 1 20); do if curl -sf http://127.0.0.1:8787/healthz >/dev/null; then echo "部署完成:http://127.0.0.1:8787/admin/" exit 0 fi sleep 0.5 done echo "服务没有正常启动,查看日志:journalctl -u agent-server -n 50" >&2 exit 1