From efd5dfe0375bee32cd5a4dd3eb4cba7c03356405 Mon Sep 17 00:00:00 2001 From: Caisking Date: Mon, 15 Sep 2025 14:58:17 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E8=84=9A=E6=9C=AC=E7=89=88?= =?utf8?q?=E6=9C=AC=E7=AE=A1=E7=90=86=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- VERSION_MANAGEMENT.md | 126 ++++++++++++++++++++++++++++++++++++ autobuild.sh | 146 ++++++++++++++++++++++++++++++++++++++++-- project_versions.conf | 25 ++++++++ 3 files changed, 290 insertions(+), 7 deletions(-) create mode 100644 VERSION_MANAGEMENT.md create mode 100644 project_versions.conf diff --git a/VERSION_MANAGEMENT.md b/VERSION_MANAGEMENT.md new file mode 100644 index 000000000..8f26b96de --- /dev/null +++ b/VERSION_MANAGEMENT.md @@ -0,0 +1,126 @@ +# 项目版本管理使用说明 + +## 概述 +编译脚本现在支持为每个项目独立管理版本号,不再使用统一的版本号。 + +## 功能特性 +1. **独立版本管理**:每个项目都有自己的版本号 +2. **配置文件支持**:版本信息存储在 `project_versions.conf` 文件中 +3. **版本查看**:可以查看所有项目的版本信息 +4. **版本更新**:可以动态更新项目版本号 +5. **自动保存**:版本更新后自动保存到配置文件 + +## 使用方法 + +### 1. 查看所有项目版本 +```bash +./autobuild.sh versions +# 或者 +./autobuild.sh version +# 或者 +./autobuild.sh v +``` + +### 2. 更新项目版本 +```bash +./autobuild.sh update-version <项目名> <新版本号> +``` + +示例: +```bash +# 更新fd230项目版本为1.3.107 +./autobuild.sh update-version fd230 1.3.107 + +# 更新user项目版本为1.2.86 +./autobuild.sh update-version user 1.2.86 +``` + +### 3. 正常编译(使用项目对应版本) +```bash +# 编译fd230项目(使用fd230的版本号) +./autobuild.sh fd230 release clean + +# 编译user项目(使用user的版本号) +./autobuild.sh user debug + +# 编译其他项目 +./autobuild.sh cm release clean +``` + +## 支持的项目 +- fd230 (默认项目) +- user +- fd230_user +- xts +- u8 +- w9 +- lt22 +- n9 +- ln +- u8m +- uoffline +- oob128 +- z1 +- 4part +- leakcheck +- autoota +- autootacli +- obu +- cm +- ct + +## 配置文件格式 +版本信息存储在 `project_versions.conf` 文件中,格式如下: +``` +# 项目版本配置文件 +# 格式: PROJECT_NAME=VERSION +# 示例: fd230=1.3.106 + +# 默认项目版本 +fd230=1.3.106 +user=1.2.85 +fd230_user=1.2.90 +... +``` + +## 版本号命名规范 +建议使用语义化版本号:`主版本号.次版本号.修订号` +- 主版本号:重大功能更新 +- 次版本号:新功能添加 +- 修订号:bug修复 + +## 注意事项 +1. 版本号更新后会自动保存到配置文件 +2. 如果配置文件不存在,会使用默认版本号 +3. 编译时会显示当前使用的项目版本号 +4. 发布包的文件名会包含项目版本号 + +## 示例输出 +```bash +$ ./autobuild.sh versions +=== 项目版本管理 === +当前项目: pack_brandy_native_js_fd230 +当前版本: 1.3.106 + +所有项目版本: + fd230: 1.3.106 + user: 1.2.85 + fd230_user: 1.2.90 + xts: 1.1.50 + u8: 1.3.20 + w9: 1.2.75 + lt22: 1.3.15 + n9: 1.2.60 + ln: 1.3.30 + u8m: 1.2.40 + uoffline: 1.2.45 + oob128: 1.3.10 + z1: 1.1.80 + 4part: 1.3.25 + leakcheck: 1.2.70 + autoota: 1.3.50 + autootacli: 1.1.30 + obu: 1.2.35 + cm: 1.3.40 + ct: 1.3.35 +``` diff --git a/autobuild.sh b/autobuild.sh index 20101af2f..fcc5b5982 100644 --- a/autobuild.sh +++ b/autobuild.sh @@ -1,5 +1,7 @@ #!/bin/bash # ./autobuild.sh [user|u8m|uoffline|oob128|z1|4part|leakcheck|autoota|autootacli|obu|cm|ct] [debug|release] [clean] +# ./autobuild.sh versions # 查看所有项目版本 +# ./autobuild.sh update-version # 更新项目版本 # # 通常三个参数可以用,每个是可选项,且三个参数输入的前后顺序可以随意。 @@ -25,6 +27,10 @@ # cm, ChinaMobile 移动入库软件版本 # ct, ChinaTelecom 电信入库软件版本 # +# 版本管理功能: +# versions, 查看所有项目的版本信息 +# update-version , 更新指定项目的版本号 +# version=HEAD DATE=$(date +%Y%m%d_%H%M%S) @@ -35,6 +41,61 @@ DEFAULT_APPLICATION_NAME=brandy-native-js-fd230 DEFAULT_RECOVERY_NAME=$DEFAULT_APPLICATION_NAME-r DEFAULT_SSB_NAME=$DEFAULT_APPLICATION_NAME-ssb +# 各项目独立版本管理 +declare -A PROJECT_VERSIONS + +# 从配置文件加载版本信息 +load_versions_from_config() { + local config_file="$HOMEDIR/project_versions.conf" + if [ -f "$config_file" ]; then + while IFS='=' read -r project version; do + # 跳过注释行和空行 + if [[ ! "$project" =~ ^[[:space:]]*# ]] && [[ -n "$project" ]]; then + PROJECT_VERSIONS["$project"]="$version" + fi + done < "$config_file" + echo "Loaded versions from $config_file" + else + echo "Warning: Config file $config_file not found, using default versions" + # 使用默认版本 + PROJECT_VERSIONS["fd230"]="1.3.106" + PROJECT_VERSIONS["user"]="1.2.85" + PROJECT_VERSIONS["fd230_user"]="1.2.90" + PROJECT_VERSIONS["xts"]="1.1.50" + PROJECT_VERSIONS["u8"]="1.3.20" + PROJECT_VERSIONS["w9"]="1.2.75" + PROJECT_VERSIONS["lt22"]="1.3.15" + PROJECT_VERSIONS["n9"]="1.2.60" + PROJECT_VERSIONS["ln"]="1.3.30" + PROJECT_VERSIONS["u8m"]="1.2.40" + PROJECT_VERSIONS["uoffline"]="1.2.45" + PROJECT_VERSIONS["oob128"]="1.3.10" + PROJECT_VERSIONS["z1"]="1.1.80" + PROJECT_VERSIONS["4part"]="1.3.25" + PROJECT_VERSIONS["leakcheck"]="1.2.70" + PROJECT_VERSIONS["autoota"]="1.3.50" + PROJECT_VERSIONS["autootacli"]="1.1.30" + PROJECT_VERSIONS["obu"]="1.2.35" + PROJECT_VERSIONS["cm"]="1.3.40" + PROJECT_VERSIONS["ct"]="1.3.35" + fi +} + +# 保存版本到配置文件 +save_versions_to_config() { + local config_file="$HOMEDIR/project_versions.conf" + echo "# 项目版本配置文件" > "$config_file" + echo "# 格式: PROJECT_NAME=VERSION" >> "$config_file" + echo "# 示例: fd230=1.3.106" >> "$config_file" + echo "" >> "$config_file" + echo "# 默认项目版本" >> "$config_file" + for project in "${!PROJECT_VERSIONS[@]}"; do + echo "$project=${PROJECT_VERSIONS[$project]}" >> "$config_file" + done + echo "Versions saved to $config_file" +} + +# 默认版本 DEFAULT_CUSTOM_FW_VERSION=1.3.106 HSO_BUILD=nohso TARGET_DATABASE_PATH=code/sdk/output/brandy/database_evb @@ -47,6 +108,7 @@ SSB_NAME=$DEFAULT_SSB_NAME CLEAN= BUILD_NAME=_FD230 +CURRENT_PROJECT_VERSION=$DEFAULT_CUSTOM_FW_VERSION checkarguments() { if [ "$1" == "clean" ] @@ -70,6 +132,19 @@ then RELEASE_BUILD=release fi +# 设置项目版本 +if [ -n "$1" ] && [ "$1" != "clean" ] && [ "$1" != "debug" ] && [ "$1" != "release" ] +then + if [ -n "${PROJECT_VERSIONS[$1]}" ] + then + CURRENT_PROJECT_VERSION=${PROJECT_VERSIONS[$1]} + echo "Setting version for project $1: $CURRENT_PROJECT_VERSION" + else + echo "Warning: No version defined for project $1, using default version: $DEFAULT_CUSTOM_FW_VERSION" + CURRENT_PROJECT_VERSION=$DEFAULT_CUSTOM_FW_VERSION + fi +fi + if [ "$1" == "user" ] then TARGET_PACK_NAME=pack_brandy_native_js_user @@ -180,8 +255,8 @@ cp_releasepackage() resfile_path=$HOMEDIR/code/sdk/output/package/brandy/$TARGET_PACK_NAME/$APPLICATION_NAME/file.bin - filename=${TARGET_PACK_NAME}_${RELEASE_BUILD}_${DEFAULT_CUSTOM_FW_VERSION}_${DATE}_${USER}.fwpkg - releasedir=$HOMEDIR/release/$TARGET_PACK_NAME/$RELEASE_BUILD/V${DEFAULT_CUSTOM_FW_VERSION}_${DATE}${BUILD_NAME} + filename=${TARGET_PACK_NAME}_${RELEASE_BUILD}_${CURRENT_PROJECT_VERSION}_${DATE}_${USER}.fwpkg + releasedir=$HOMEDIR/release/$TARGET_PACK_NAME/$RELEASE_BUILD/V${CURRENT_PROJECT_VERSION}_${DATE}${BUILD_NAME} packsource=$HOMEDIR/code/sdk/tools/pkg/fwpkg/brandy/upload_app.fwpkg echo do release copy mkdir -p $releasedir/bin @@ -216,12 +291,12 @@ build_target() { cd $HOMEDIR/code/sdk/ - echo ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$DEFAULT_CUSTOM_FW_VERSION $TARGET_PACK_NAME 2>&1 + echo ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$CURRENT_PROJECT_VERSION $TARGET_PACK_NAME 2>&1 if [ "$HSO_BUILD" == "hso" ] then - ./build.py $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$DEFAULT_CUSTOM_FW_VERSION $TARGET_PACK_NAME 2>&1 + ./build.py $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$CURRENT_PROJECT_VERSION $TARGET_PACK_NAME 2>&1 else - ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$DEFAULT_CUSTOM_FW_VERSION $TARGET_PACK_NAME 2>&1 + ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$CURRENT_PROJECT_VERSION $TARGET_PACK_NAME 2>&1 fi #./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE $TARGET_PACK_NAME 2>&1 ret_code=$? @@ -240,16 +315,73 @@ fi cd $HOMEDIR } +# 版本管理功能 +show_versions() { + echo "=== 项目版本管理 ===" + echo "当前项目: $TARGET_PACK_NAME" + echo "当前版本: $CURRENT_PROJECT_VERSION" + echo "版本数量: ${#PROJECT_VERSIONS[@]}" + echo "" + echo "所有项目版本:" + for project in "${!PROJECT_VERSIONS[@]}"; do + echo " $project: ${PROJECT_VERSIONS[$project]}" + done + echo "" +} + +# 检查是否是版本管理命令 +if [ "$1" == "versions" ] || [ "$1" == "version" ] || [ "$1" == "v" ] +then + load_versions_from_config + show_versions + exit 0 +fi + +# 检查是否是更新版本命令 +if [ "$1" == "update-version" ] && [ -n "$2" ] && [ -n "$3" ] +then + # 先加载版本配置 + load_versions_from_config + project_name=$2 + new_version=$3 + if [ -n "${PROJECT_VERSIONS[$project_name]}" ] + then + old_version=${PROJECT_VERSIONS[$project_name]} + PROJECT_VERSIONS[$project_name]=$new_version + echo "Updated $project_name version: $old_version -> $new_version" + # 保存到配置文件 + save_versions_to_config + else + echo "Error: Project $project_name not found" + echo "Available projects:" + for project in "${!PROJECT_VERSIONS[@]}"; do + echo " $project" + done + exit 1 + fi + exit 0 +fi + +# 加载版本配置 +load_versions_from_config + checkarguments $1 checkarguments $2 checkarguments $3 checkarguments $4 + +# 显示当前编译信息 +echo "=== 编译信息 ===" +echo "项目: $TARGET_PACK_NAME" +echo "版本: $CURRENT_PROJECT_VERSION" +echo "构建类型: $RELEASE_BUILD" if [ "$CLEAN" == "-c" ] then -echo $0 $TARGET_PACK_NAME $RELEASE_BUILD clean +echo "清理模式: 是" else -echo $0 $TARGET_PACK_NAME $RELEASE_BUILD +echo "清理模式: 否" fi +echo "==================" # read -n 1 -p "Press any key to continue..." diff --git a/project_versions.conf b/project_versions.conf new file mode 100644 index 000000000..361b7e356 --- /dev/null +++ b/project_versions.conf @@ -0,0 +1,25 @@ +# 项目版本配置文件 +# 格式: PROJECT_NAME=VERSION +# 示例: fd230=1.3.106 + +# 默认项目版本 +ln=1.3.30 +4part=1.3.25 +n9=1.2.107 +u8m=1.2.40 +lt22=1.3.15 +fd230=1.3.107 +z1=1.1.80 +leakcheck=1.2.70 +u8=1.3.20 +fd230_user=1.2.90 +ct=1.3.35 +cm=1.3.40 +w9=1.2.75 +autoota=1.3.50 +xts=1.1.50 +oob128=1.3.10 +uoffline=1.2.45 +obu=1.2.35 +user=1.2.85 +autootacli=1.1.30 -- 2.17.1