优化部署逻辑,正在进行验证

This commit is contained in:
2026-07-29 22:47:29 +08:00
parent 94bd61daa1
commit 42058e724d
+3 -16
View File
@@ -176,20 +176,17 @@ check_container() {
# ---------- 版本管理函数 ----------
# read_version_file 读取仓库的 VERSION.ini 文件
read_version_file() {
local version_file="./VERSION.ini"
if [ ! -f "$version_file" ]; then
print_error "VERSION.ini 文件不存在: $version_file"
return 1
fi
# 去掉注释行(以 ; 或 # 开头),读取第一列为语义版本
SEMVER=$(grep -v "^[;#]" "$version_file" | head -1 | awk '{print $1}')
LTS_DATE=$(grep -v "^[;#]" "$version_file" | head -1 | awk '{print $2}')
echo "$SEMVER $LTS_DATE"
}
# get_version_type 判断版本类型
get_version_type() {
local semver="$1"
local minor="${semver#*.}"
@@ -200,7 +197,6 @@ get_version_type() {
fi
}
# generate_target_version 生成目标版本字符串
generate_target_version() {
local channel="$1"
local semver_lts_date
@@ -217,7 +213,6 @@ generate_target_version() {
vtype=$(get_version_type "$SEMVER")
if [ "$channel" = "lts" ] || [ "$vtype" = "lts" ]; then
# LTS 版本必须有日期
if [ -z "$LTS_DATE" ]; then
LTS_DATE=$(date +%Y%m%d)
print_warn "LTS 版本未指定日期,使用今天: $LTS_DATE"
@@ -225,7 +220,6 @@ generate_target_version() {
TARGET_VERSION="${SEMVER}-lts-${LTS_DATE}"
IMAGE_TAG="${SEMVER}-lts-${LTS_DATE}"
else
# Preview 版本使用编译时间戳
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
TARGET_VERSION="${SEMVER}-preview-${TIMESTAMP}"
IMAGE_TAG="preview-${TIMESTAMP}"
@@ -233,14 +227,11 @@ generate_target_version() {
echo "$TARGET_VERSION $IMAGE_TAG"
}
# get_current_version 获取当前运行的版本
get_current_version() {
local version_file="${DEPLOY_DIR}/VERSION.ini"
if [ -f "$version_file" ]; then
# 去掉注释行,读取第一行内容
grep -v "^[;#]" "$version_file" | head -1 | tr -d '\n'
else
# 兼容旧版本
if [ "$CONTAINER_EXISTS" = true ]; then
docker exec frpc-console cat /app/VERSION.ini 2>/dev/null | grep -v "^[;#]" | head -1 | tr -d '\n' || echo "0.0.0-dev"
else
@@ -249,20 +240,16 @@ get_current_version() {
fi
}
# extract_semver 提取语义版本
extract_semver() {
local version="$1"
echo "$version" | sed -E 's/^([0-9]+\.[0-9]+).*$/\1/'
}
# extract_timestamp 提取时间戳
extract_timestamp() {
local version="$1"
echo "$version" | sed -E 's/^[0-9]+\.[0-9]+-(lts|preview)-//'
}
# compare_version 比较两个版本
# 返回: 0=相等, 1=目标更新, 2=目标更旧
compare_version() {
local current="$1"
local target="$2"
@@ -504,7 +491,7 @@ do_deploy() {
fi
fi
# ----- 安装必要工具 -----
# ----- 安装必要工具(必须在拉取代码之前!)-----
if [ "$NEED_INSTALL_GIT" = true ] || [ "$NEED_INSTALL_CURL" = true ] || [ "$NEED_INSTALL_WGET" = true ]; then
print_step "安装必要工具..."
local pkgs=""
@@ -542,7 +529,7 @@ do_deploy() {
print_success "必要工具安装完成"
fi
# ----- 拉取代码 -----
# ----- 拉取代码(现在 git 已安装)-----
print_step "拉取代码..."
rm -rf "$WORK_DIR"
git clone --depth 1 --branch "$BRANCH" "$REPO_URL" "$WORK_DIR"
@@ -565,7 +552,7 @@ do_deploy() {
mkdir -p "$DEPLOY_DIR"
mkdir -p "$DATA_DIR"
# ----- 构建 Docker 镜像 -----
# ----- 构建 Docker 镜像Dockerfile 内部完成编译)-----
print_step "构建 Docker 镜像..."
docker build -t "${IMAGE_NAME}:${IMAGE_TAG}" \
--build-arg VERSION="${TARGET_VERSION}" \