#!/usr/bin/env bash set -euo pipefail # 快速更新脚本:适合已经完成首次部署后的日常代码更新。 # 只做 git 更新、前端 build、重启用户级服务;不检查/安装系统依赖,不重装 Python/npm 依赖。 # 如果本次改动包含依赖、systemd 模板或部署脚本变化,请使用 scripts/deploy-ubuntu.sh。 ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" BACKEND_SERVICE="zk-data-agent-backend" FRONTEND_SERVICE="zk-data-agent-frontend" BRANCH="${1:-}" log() { printf "\n\033[1;34m==>\033[0m %s\n" "$1" } fail() { printf "\033[1;31mERROR\033[0m %s\n" "$1" >&2 exit 1 } cd "${ROOT_DIR}" [[ -d .git ]] || fail "${ROOT_DIR} 不是 git 仓库。" if [[ -z "${BRANCH}" ]]; then BRANCH="$(git branch --show-current)" fi [[ -n "${BRANCH}" ]] || fail "无法判断当前分支,请显式传入分支名。" if [[ -n "$(git status --porcelain)" ]]; then fail "工作区有未提交改动。请先处理后再快速更新。" fi log "拉取代码:origin/${BRANCH}" git fetch origin git checkout "${BRANCH}" git pull --ff-only origin "${BRANCH}" log "构建前端" cd "${ROOT_DIR}/frontend/app" npm run build log "重启用户服务" systemctl --user restart "${BACKEND_SERVICE}" "${FRONTEND_SERVICE}" log "健康检查" sleep 1 systemctl --user --no-pager --lines=0 status "${BACKEND_SERVICE}" "${FRONTEND_SERVICE}" echo echo "快速更新完成。"