二、1.1 下载 CAR-CLI
加载远程配置文件到当前工作目录。
cd workdirwget "your config file url"
执行如下脚本,下载命令行工具。
cd workdirmkdir pkg && cd pkgwget https://github.com/tencentyun/car-cli/releases/download/v1.0.0/car.zipunzip car.zipmv ./car/linux/car ../cd ..chmod +x car
三、1.2 配置文件要求
使用 CAR-CLI 前,需在可执行文件同级目录下放置配置文件,并将以下腾讯云账号信息替换为实际值。
| 配置项 | 说明 | 获取方式 |
| SecretId | 腾讯云 API 密钥 ID。 | 腾讯云控制台 – 访问管理。 |
| SecretKey | 腾讯云 API 密钥。 | 腾讯云控制台 – 访问管理。 |
| AppId | 腾讯云应用 ID。 | 腾讯云控制台 – 账号信息。 |
注意:使用时请确保可执行文件和配置文件位于相同目录下。
四、1.3 基础命令
# 查看帮助信息car help
五、1.4 应用版本更新流水线构建
下图为应用版本更新流水线的一个示例:
八、2.1.1 创建应用
创建新应用,支持桌面端和移动端多种应用类型。
命令格式:
car create-application –name <应用名称> [–app-type <应用类型>]
参数说明:
| 参数 | 必填 | 说明 | 限制条件 |
| –name | 是 | 应用名称 | 16字符以内,仅支持中文、字母、数字或连接符 -。 |
| –app-type | 否 | 应用类型 | 不传时默认创建桌面端 Application3D。 |
支持的应用类型:
| 应用类型 | 适用场景 | 平台 |
| Application3D | 3D 桌面应用。 | 桌面端 |
| ApplicationXR | XR 扩展现实应用。 | 桌面端 |
| ApplicationWeb | Web 桌面应用。 | 桌面端 |
| ApplicationAPK | Android 移动应用。 | 移动端 |
使用示例:
# 创建桌面端应用(默认类型)car create-application –name my-desktop-app# 创建移动端应用car create-application –name my-mobile-app –app-type ApplicationAPK
十、2.2.1 创建应用版本
为指定应用创建新版本,同一应用下版本创建数量上限为 5 个。
命令格式:
car create-application-version –app-id <应用ID> –name <版本名称> –type <包格式> [–regions <分发地区>] [–update-mode <更新方式>]
参数说明:
| 参数 | 必填 | 说明 | 适用平台 |
| –app-id | 是 | 应用 ID。 | 全平台 |
| –name | 是 | 版本命名。 | 全平台 |
| –type | 是 | 包文件类型。 | 全平台 |
| –regions | 否 | 分发地区列表。 | 仅桌面端 |
| –update-mode | 否 | 更新方式。 | 仅桌面端 |
包文件类型支持:
| 平台 | 支持格式 | 说明 |
| 桌面端 | zip、rar、7z | 压缩包格式。 |
| 移动端 | apk、xapk、zip | Android 安装包格式。 |
注意事项:
·若存在"创建中/待发布/创建失败"状态的版本,操作会被拒绝。
·–regions 和 –update-mode 参数仅桌面端生效,移动端无需传入。
·最终格式合法性由后端根据应用实际类型校验。
使用示例:
# 桌面端:创建全量更新版本,分发至中国大陆和东京car create-application-version –app-id app-xxx –name v1.0.0 –type zip –regions ap-chinese-mainland,ap-tokyo –update-mode FULL# 移动端:创建新版本car create-application-version –app-id app-xxx –name mobile-v1 –type apk
十一、2.2.2 上传应用版这篇件
上传应用包文件到指定版本,支持本地文件路径和 URL 两种方式。
命令格式:
# 本地文件上传car upload-application-version-file –app-id <应用ID> –version-id <版本ID> –path <本地路径># URL 上传car upload-application-version-file –app-id <应用ID> –url <文件URL>
参数说明:
| 参数 | 必填 | 说明 | 注意事项 |
| –app-id | 是 | 应用 ID。 | 需与创建时一致。 |
| –version-id | 是 | 应用版本 ID。 | 本地上传时必填。 |
| –path | 是(本地) | 本地文件路径。 | 注意 Windows 和 Linux 路径格式差异。 |
| –url | 是(URL) | 文件下载地址。 | URL 上传时只需此参数。 |
路径格式示例:
| 操作系统 | 路径格式示例 |
| Windows | C:\\data\\myapp.zip |
| Linux/macOS | /data/myapp.apk |
使用示例:
# Windows 本地文件上传car upload-application-version-file –app-id app-xxx –path C:\\data\\xxx.zip –version-id ver-xxx# Linux 本地文件上传car upload-application-version-file –app-id app-xxx –path /data/xxx.apk –version-id ver-xxx# URL 上传car upload-application-version-file –app-id app-xxx –url https://example.com/app.zip
注意:上传成功后,版本名称和包格式会被替换为所上传文件的名字和格式。
十二、2.2.3 发布应用版本
将指定版本发布上线,使其对用户可见。
命令格式:
car set-version-online –app-id <应用ID> –version-id <版本ID>
参数说明:
| 参数 | 必填 | 说明 |
| –app-id | 是 | 应用 ID。 |
| –version-id | 是 | 应用版本 ID。 |
平台差异:
| 平台 | 发布前校验 | 说明 |
| 桌面端 | 校验启动路径。 | 需确保启动路径配置正确。 |
| 移动端 | 自动跳过校验。 | 无需额外配置。 |
使用示例:
car set-version-online –app-id app-xxx –version-id ver-xxx
十三、2.2.4 删除应用版本
异步删除指定版本,删除后可通过查询版本列表确认状态。
命令格式:
car delete-application-version –app-id <应用ID> –version-id <版本ID>
参数说明:
| 参数 | 必填 | 说明 |
| –app-id | 是 | 应用 ID。 |
| –version-id | 是 | 应用版本 ID。 |
使用示例:
car delete-application-version –app-id app-xxx –version-id ver-xxx
十四、2.2.5 查询应用版本列表
展示指定应用的所有版本信息,包括版本 ID 和版本状态。
命令格式:
car describe-application-version –app-id <应用ID>
参数说明:
| 参数 | 必填 | 说明 |
| –app-id | 是 | 应用 ID。 |
高级用法:结合 grep 和 awk 命令获取最旧版本。
# 获取最旧版本(排除正在使用的版本)car describe-application-version –app-id app-xxx | grep -v "Inuse" | awk '{print $1}' | head -n 1
使用示例:
# 查询所有版本car describe-application-version –app-id app-xxx# 获取最旧版本 IDcar describe-application-version –app-id app-xxx | grep -v "Inuse" | awk '{print $1}' | head -n 1
十六、3.1 功能差异总览
| 功能模块 | 桌面端 | 移动端 | 说明 |
| 应用类型 | Application3DApplicationXRApplicationWeb | ApplicationAPK | 创建时需指定。 |
| 包格式 | zip、rar、7z | apk、xapk、zip | 后端校验。 |
| 分发地区 | 支持 | 不支持 | –regions 仅桌面端。 |
| 更新方式 | 支持全量更新 | 不支持 | –update-mode 仅桌面端。 |
| 发布校验 | 校验启动路径 | 自动跳过 | 平台差异。 |
十八、3.2.1 create-application 命令
| 参数 | 桌面端 | 移动端 | 说明 |
| –name | 必填 | 必填 | 应用名称。 |
| –app-type | 可选(默认 Application3D) | 必填 ApplicationAPK | 应用类型。 |
十九、3.2.2 create-application-version 命令
| 参数 | 桌面端 | 移动端 | 说明 |
| –app-id | 必填 | 必填 | 应用 ID。 |
| –name | 必填 | 必填 | 版本名称。 |
| –type | 必填 | 必填 | 包格式。 |
| –regions | 可选 | 不支持 | 分发地区。 |
| –update-mode | 可选 | 不支持 | 更新方式。 |
20、3.2.3 set-version-online 命令
| 校验项 | 桌面端 | 移动端 |
| 启动路径 | 强制校验。 | 自动跳过。 |
22、4.1 地区列表
| 地区代码 | 地区名称 | 类型 |
| ap-chinese-mainland | 中国大陆 | 大陆默认 |
| ap-tokyo | 东京标准区 | 国际默认 |
| ap-tokyo-fusion | 东京融合区 | 融合区 |
| ap-seoul | 首尔标准区 | 标准区 |
| ap-seoul-fusion | 首尔融合区 | 融合区 |
| ap-singapore | 新加坡标准区 | 标准区 |
| ap-singapore-fusion | 新加坡融合区 | 融合区 |
| eu-frankfurt | 法兰克福标准区 | 标准区 |
| eu-frankfurt-fusion | 法兰克福融合区 | 融合区 |
| na-north-america | 北美标准区 | 标准区 |
| na-north-america-fusion | 北美融合区 | 融合区 |
| me-middle-east-fusion | 中东融合区 | 融合区 |
| sa-south-america-fusion | 南美融合区 | 融合区 |
23、4.2 地区选择建议
·中国大陆用户:选择 ap-chinese-mainland。
·国际用户:选择就近的标准区或融合区。
·多地区分发:可传入多个地区代码,用逗号分隔。
25、5.1 桌面端应用完整流程
# 1. 创建桌面端应用car create-application –name my-desktop-app# 2. 创建新版本(全量更新,分发至中国大陆和东京)car create-application-version –app-id app-xxx –name v1.0.0 –type zip –regions ap-chinese-mainland,ap-tokyo –update-mode FULL# 3. 上传应用包car upload-application-version-file –app-id app-xxx –version-id ver-xxx –path /data/myapp.zip# 4. 发布上线car set-version-online –app-id app-xxx –version-id ver-xxx
26、5.2 移动端应用完整流程
# 1. 创建移动端应用car create-application –name my-mobile-app –app-type ApplicationAPK# 2. 创建新版本(无需 regions 和 update-mode)car create-application-version –app-id app-xxx –name v1.0.0 –type apk# 3. 上传应用包car upload-application-version-file –app-id app-xxx –version-id ver-xxx –path /data/myapp.apk# 4. 发布上线car set-version-online –app-id app-xxx –version-id ver-xxx
27、5.3 版本管理自动化脚本
cd workdir# 查询对应应用的版本列表output=$(./car describe-application-version –app-id $ApplicationID) #流水线环境变量配置ApplicationIDlineCount=$(echo "$output" | wc -l)# 若版本数量大于5,则删除旧版本if [ $lineCount -ge 5 ];then versionID=$(echo "$output" | grep -v "Inuse" | awk '{print $1}' | head -n 1) ./car delete-application-version –app-id $ApplicationID –version-id $versionIDfi# 因删除应用版本是异步操作,所以定时查询版本是否删除成功waitTimes=0while [ $lineCount -ge 5 ]do output=$(./car describe-application-version –app-id $ApplicationID) #替换为自己ApplicationID lineCount=$(echo "$output" | wc -l) waitTimes=$((waitTimes+1)) if [ $waitTimes -gt 20 ] then echo "Error: Waiting too long to delete application version." exit 1 fi sleep 1done# 根据PackageURL查询包名称和包类型fileName=$(basename $PackageURL) # 流水线环境变量配置PackageURLecho $fileNamefileType="${PackageURL##*.}"echo $fileType# 创建新版本output=$(./car create-application-version –app-id $ApplicationID –name $fileName –type $fileType)# 上传新版本应用到云端./car upload-application-version-file –app-id $ApplicationID –version-id $output –path $fileName# 发布新版本./car set-version-online –app-id $ApplicationID –version-id $output
29、6.1 版本数量限制
·同一应用下版本创建数量上限为 5 个。
·若存在"创建中/待发布/创建失败"状态的版本,新创建操作会被拒绝。
·建议定期清理旧版本,保持版本列表整洁。
30、6.2 路径格式注意
·Windows:使用反斜杠 \\,如 C:\\data\\app.zip。
·Linux/macOS:使用正斜杠 /,如 /data/app.zip。
·建议脚本中根据操作系统自动适配路径格式。
31、6.3 上传后版本信息变更
上传应用包成功后:
·版本名称会被替换为上传文件的文件名。
·包格式会被替换为上传文件的实际格式。
·请在发布前确认版本信息正确。
32、6.4 异步操作说明
·删除版本为异步操作,执行后需通过查询版本列表确认删除状态。
·建议脚本中添加轮询检查逻辑,确保操作完成后再执行后续步骤。