diff --git a/deploy.sh b/deploy.sh index 2c9b197..384e0e4 100644 --- a/deploy.sh +++ b/deploy.sh @@ -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}" \