fix(deploy): 增加部署更新实时进度

This commit is contained in:
Cheng Zhou
2026-07-01 11:22:39 +08:00
parent 5ee84c97e8
commit 45ed1d7f36
3 changed files with 27 additions and 11 deletions
@@ -155,6 +155,8 @@ bash scripts/install.sh release --base-url https://ctms.example.com
7. 检查容器状态、后端环境、/health、/api/v1/auth/login-key。 7. 检查容器状态、后端环境、/health、/api/v1/auth/login-key。
``` ```
更新进入“执行部署更新”后会持续显示 Docker 镜像拉取与构建进度:交互终端使用滚动实时输出窗口,CI、远程面板或管道环境直接流式输出构建日志,并在两种模式下显示累计耗时。
脚本不会执行: 脚本不会执行:
```text ```text
+22 -9
View File
@@ -345,7 +345,7 @@ ctms_run_quiet() {
mkdir -p "$CTMS_LOG_DIR" mkdir -p "$CTMS_LOG_DIR"
local log_file local log_file
log_file="$(mktemp "$CTMS_LOG_DIR/cmd_XXXXXXXX")" log_file="$(mktemp "$CTMS_LOG_DIR/cmd_XXXXXXXX")"
local start_ts elapsed exit_code local start_ts elapsed exit_code streamed_output=0
start_ts="$(date +%s)" start_ts="$(date +%s)"
set +e set +e
@@ -368,9 +368,16 @@ ctms_run_quiet() {
printf '\r\033[K' printf '\r\033[K'
fi fi
else else
printf ' %s%s%s %s …\n' "${CC_MUTED}" "$ICON_INFO" "${C_RESET}" "$label" if [[ "${CTMS_LIVE_OUTPUT:-0}" -eq 1 ]]; then
"$@" >"$log_file" 2>&1 printf ' %s%s%s %s(实时输出)\n' "${CC_INFO}${C_BOLD}" "$ICON_INFO" "${C_RESET}" "$label"
exit_code=$? "$@" 2>&1 | tee "$log_file"
exit_code="${PIPESTATUS[0]}"
streamed_output=1
else
printf ' %s%s%s %s …\n' "${CC_MUTED}" "$ICON_INFO" "${C_RESET}" "$label"
"$@" >"$log_file" 2>&1
exit_code=$?
fi
fi fi
set -e set -e
@@ -381,11 +388,17 @@ ctms_run_quiet() {
return 0 return 0
fi fi
printf '\n %s%s%s %s%s 失败(耗时 %ss),完整输出:%s\n\n' \ if [[ "$streamed_output" -eq 1 ]]; then
"${CC_DANGER}${C_BOLD}" "$ICON_FAIL" "${C_RESET}" "${CC_DANGER}" "$label" "$elapsed" "${C_RESET}" >&2 printf '\n %s%s%s %s%s 失败(耗时 %ss),输出已在上方实时展示。%s\n\n' \
sed 's/^/ /' "$log_file" >&2 "${CC_DANGER}${C_BOLD}" "$ICON_FAIL" "${C_RESET}" "${CC_DANGER}" "$label" "$elapsed" "${C_RESET}" >&2
printf '\n' >&2 ctms_fail "命令执行失败,详细日志保留于:${log_file#"$CTMS_ROOT_DIR"/}"
ctms_fail "命令执行失败,详细日志保留于:${log_file#"$CTMS_ROOT_DIR"/}(追加 --verbose 可看实时输出)" else
printf '\n %s%s%s %s%s 失败(耗时 %ss),完整输出:%s\n\n' \
"${CC_DANGER}${C_BOLD}" "$ICON_FAIL" "${C_RESET}" "${CC_DANGER}" "$label" "$elapsed" "${C_RESET}" >&2
sed 's/^/ /' "$log_file" >&2
printf '\n' >&2
ctms_fail "命令执行失败,详细日志保留于:${log_file#"$CTMS_ROOT_DIR"/}(追加 --verbose 可看实时输出)"
fi
} }
# 固定占用 9 行:上边框 + 6 行日志 + 下边框 + 状态行。 # 固定占用 9 行:上边框 + 6 行日志 + 下边框 + 状态行。
+3 -2
View File
@@ -554,8 +554,9 @@ run_install_script() {
local install_script="$CTMS_ROOT_DIR/scripts/install.sh" local install_script="$CTMS_ROOT_DIR/scripts/install.sh"
[[ -x "$install_script" ]] || ctms_fail "安装脚本不可执行: $install_script" [[ -x "$install_script" ]] || ctms_fail "安装脚本不可执行: $install_script"
ctms_info "调用安装脚本完成容器更新..." ctms_info "调用安装脚本完成容器更新,镜像拉取与构建进度将在下方实时显示..."
"$install_script" "$TARGET_ENV" "${INSTALL_ARGS[@]}" COMPOSE_PROGRESS=plain BUILDKIT_PROGRESS=plain \
"$install_script" "$TARGET_ENV" "${INSTALL_ARGS[@]}"
} }
# ── 完成提示 ───────────────────────────────── # ── 完成提示 ─────────────────────────────────