From d84b6c568ca2e6143a25e3d5f55685a3d14d2b80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AD=A6=E9=98=B3?= Date: Thu, 7 May 2026 15:41:29 +0800 Subject: [PATCH] Add fast server update script --- README.md | 8 ++++++ scripts/update-server-fast.sh | 51 +++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100755 scripts/update-server-fast.sh diff --git a/README.md b/README.md index b8a6361..98084b6 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,14 @@ APP_DIR="$HOME/zk-data-agent-test" bash "$HOME/zk-data-agent-test/scripts/instal bash scripts/deploy-ubuntu.sh ``` +已完成首次部署后,如果只是普通代码更新,可以使用快速更新: + +```bash +bash scripts/update-server-fast.sh +``` + +快速更新只会拉取代码、构建前端并重启用户服务;如果本次改动包含依赖、systemd 模板或部署脚本变化,请使用 `scripts/deploy-ubuntu.sh`。 + 如果是全新 Ubuntu 机器,首次安装可以让脚本顺手安装系统依赖: ```bash diff --git a/scripts/update-server-fast.sh b/scripts/update-server-fast.sh new file mode 100755 index 0000000..843c0e0 --- /dev/null +++ b/scripts/update-server-fast.sh @@ -0,0 +1,51 @@ +#!/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 "快速更新完成。"