Support up to 3 strategy slots on one host with auto ports.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+42
-6
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# deploy/lib/update.sh — 更新(仅 git pull,禁止 scp)
|
||||
# deploy/lib/update.sh — 更新(仅 git pull,禁止 scp);支持单槽位或全部串行
|
||||
set -e
|
||||
set -u
|
||||
if [ -n "${BASH_VERSION:-}" ]; then
|
||||
@@ -10,22 +10,58 @@ LIB_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
# shellcheck source=common.sh
|
||||
source "${LIB_DIR}/common.sh"
|
||||
|
||||
update_one_slot() {
|
||||
local slot="$1"
|
||||
resolve_slot "${slot}"
|
||||
if ! repo_ready "${INSTALL_ROOT}"; then
|
||||
log "槽位 ${slot} 未安装(${INSTALL_ROOT}),跳过"
|
||||
return 0
|
||||
fi
|
||||
step "更新槽位 ${slot}: ${INSTALL_ROOT} :${API_PORT} ${PM2_APP_NAME}"
|
||||
ensure_system_deps
|
||||
bash "${INSTALL_ROOT}/deploy/pull_and_restart.sh"
|
||||
verify_health "${API_PORT}" || true
|
||||
log "槽位 ${slot} 更新完成"
|
||||
}
|
||||
|
||||
update_all_slots() {
|
||||
local s
|
||||
local any=0
|
||||
step "串行更新全部已安装策略机槽位(避免同机并行 npm build)"
|
||||
for s in $(list_installed_slots); do
|
||||
any=1
|
||||
update_one_slot "${s}"
|
||||
done
|
||||
if [[ "${any}" -eq 0 ]]; then
|
||||
die "未找到已安装的策略机(槽位 1/2/3)"
|
||||
fi
|
||||
echo ""
|
||||
log "全部槽位更新完成"
|
||||
}
|
||||
|
||||
main_update() {
|
||||
require_root
|
||||
local mode="${EHS_UPDATE_MODE:-one}"
|
||||
if [[ "${mode}" == "all" ]]; then
|
||||
update_all_slots
|
||||
return 0
|
||||
fi
|
||||
|
||||
resolve_slot "${INSTANCE_SLOT:-1}"
|
||||
if ! REPO_ROOT="$(resolve_repo_root)"; then
|
||||
die "未找到安装目录 ${INSTALL_ROOT},请先执行「1) 一键部署策略机」"
|
||||
die "未找到安装目录 ${INSTALL_ROOT},请先执行「1) 一键部署策略机」并选择该槽位"
|
||||
fi
|
||||
if ! repo_ready "${REPO_ROOT}"; then
|
||||
die "安装不完整,请先执行「1) 一键部署策略机」"
|
||||
die "安装不完整: ${REPO_ROOT}"
|
||||
fi
|
||||
|
||||
step "更新 — 环境检测 (缺则装,有则跳过)"
|
||||
ensure_system_deps
|
||||
step "更新 比特骆驼自动化对冲系统 (git pull + 构建 + pm2 reload)"
|
||||
step "更新槽位 ${INSTANCE_SLOT} (git pull + 构建 + pm2 reload)"
|
||||
bash "${REPO_ROOT}/deploy/pull_and_restart.sh"
|
||||
verify_health || true
|
||||
verify_health "${API_PORT}" || true
|
||||
echo ""
|
||||
log "更新完成"
|
||||
log "更新完成 slot=${INSTANCE_SLOT} http://127.0.0.1:${API_PORT}/health"
|
||||
}
|
||||
|
||||
main_update "$@"
|
||||
|
||||
Reference in New Issue
Block a user