fix(deploy): 兼容旧配置迁移并支持固定版本验收
Test deployment public URL (Linux) / test-linux (push) Canceled after 0s
Test start.ps1 (Windows) / test-windows (push) Canceled after 0s

This commit is contained in:
2026-10-03 07:56:12 +08:00
parent c252a2f9ad
commit e29d203bb7
6 changed files with 341 additions and 1 deletions
+20 -1
View File
@@ -19,13 +19,18 @@ if [[ "${1:-}" =~ ^(-h|--help)$ ]]; then
echo " 等待核心服务恢复可用的最长时间,默认 300 秒"
echo " UPDATE_SERVICES='easyai-server easyai-web model-conversion-worker'"
echo " 仅拉取并重建指定服务;不重建其依赖。留空保持整组更新。"
echo " UPDATE_RELEASE_VERSION=固定版本"
echo " 通过脚本固定核心服务和转换 Worker 的镜像版本,不提升 latest。"
echo " UPDATE_ADOPT_LEGACY_CONFIG=1"
echo " 备份旧部署配置并将本地差异迁移为独立覆盖文件。"
echo ""
echo "仓库更新后会自动执行 scripts/update-env.d 中的幂等环境配置迁移。"
exit 0
fi
# 进入脚本所在目录(项目根目录)
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
SCRIPT_DIR="$(cd "${UPDATE_PROJECT_DIR:-$SOURCE_DIR}" && pwd)"
cd "$SCRIPT_DIR"
# 命令行内选择更新方式(默认:更新并拉取仓库)
@@ -92,6 +97,11 @@ resolve_update_mode() {
resolve_update_mode
if [ -n "${UPDATE_RELEASE_VERSION:-}" ] && ! [[ "$UPDATE_RELEASE_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]{8}(\.[0-9]+)?$ ]]; then
echo "❌ UPDATE_RELEASE_VERSION 格式不正确;尚未修改配置或容器" >&2
exit 1
fi
# 拉取整个仓库更新
if [ "$SKIP_REPO_UPDATE" = false ]; then
echo ""
@@ -107,6 +117,9 @@ if [ "$SKIP_REPO_UPDATE" = false ]; then
fi
before_revision="$(git rev-parse HEAD)"
if [ "${UPDATE_ADOPT_LEGACY_CONFIG:-0}" = "1" ]; then
python3 "$SOURCE_DIR/scripts/prepare-update-repository.py" "$SCRIPT_DIR"
fi
echo "📥 正在执行 git pull --ff-only..."
if git pull --ff-only; then
echo "✅ 仓库已更新到最新版本"
@@ -161,6 +174,12 @@ init_server_http_bind_ip .env
. ./scripts/init-security-env.sh
init_security_env .env upgrade
if [ -n "${UPDATE_RELEASE_VERSION:-}" ]; then
write_env_value .env VERSION "$UPDATE_RELEASE_VERSION"
write_env_value .env MODEL_CONVERSION_WORKER_VERSION "$UPDATE_RELEASE_VERSION"
echo "📌 已固定本次发布版本: $UPDATE_RELEASE_VERSION"
fi
# 在更新镜像和重建服务前迁移并校验后端公开 API 地址。
# shellcheck source=scripts/init-public-api-base-url.sh
. ./scripts/init-public-api-base-url.sh