文档中心>应用云渲染>实践教程>如何使用 CAR-CLI 实现应用上传及版本更新

如何使用 CAR-CLI 实现应用上传及版本更新

最近更新时间:2024-06-04 15:17:41

我的收藏
CAR-CLI 是应用版本管理的命令行工具。通过 CAR-CLI,您可以快速轻松的调用云应用 API 来查询、上传、更新和删除应用版本。本文将介绍 CAR-CLI 的基础功能,以及如何使用 CAR-CLI 构建流水线来实现应用版本更新的自动化。

使用基础功能

说明:
使用时请将配置文件放到命令工具同目录下,并将腾讯云账号的 SecretId、SecretKey 以及 AppId 替换。CAR-CLI 支持 MacOS,Windows 以及 Linux 系统,以下以 Linux 操作系统为例。

查看帮助信息

执行以下命令,查看命令行工具 CAR-CLI 的帮助信息。
./car help
以新建应用命令为例,执行以下命令,查看具体指令的详细帮助信息。
./car create-application help

新建应用

执行以下命令可创建新应用,需填写应用的名称,名称只支持中文、字母、数字或连接符"-",要求16字符以内。指令执行成功则返回新建应用的应用 ID。
./car create-application --name xxx

创建应用新版本

执行以下命令可为应用创建新版本,同一应用下版本创建数量上限为5个,需填写应用 ID、版本名称和应用格式(zip/rar/7z),若有“创建中/待发布/创建失败”的版本,则操作会被拒绝,版本创建后,还需上传应用包和发布版本。执行执行成功则返回新版本的版本 ID。
./car create-application-version --app-id app-xxx --name xxx --type zip

上传应用版本文件

执行以下命令为应用版本上传应用包,需填写应用 ID、本地路径和应用版本 ID,请确保应用 ID 和应用版本 ID 正确。若创建应用或创建应用新版本中,上传文件任务失败,请执行本命令,同时确保本地文件路径不变。
./car upload-application-version-file --app-id app-xxx --path /data/xxx.zip --version-id ver-xxx
注意:
应用版本文件上传成功后,若所上传文件的名称和格式与创建应用新版本中使用的版本名称和应用格式不同,则版本名称和应用格式会被替换为所上传文件的名字和格式。

发布应用版本

执行以下命令发布应用指定版本,需填写应用 ID 和应用版本 ID。
./car set-version-online --app-id app-xxx --version-id ver-xxx

删除应用版本

执行以下命令删除应用版本,需填写应用 ID 和应用版本 ID,异步删除,可通过查询应用版本列表查看是否删除成功。
./car delete-application-version --app-id app-xxx --version-id ver-xxx

展示应用版本列表

执行以下命令展示应用版本列表,需填写应用 ID。输出版本 ID 和版本状态,可通过 grep 和 awk 命令获取最旧的版本。
./car describe-application-version --app-id app-xxx
./car describe-application-version --app-id app-xxx | grep -v "Inuse" | awk '{print $1}' | head -n 1

应用版本更新流水线构建

本节以腾讯云 CODING 流水线为例,构建应用版本更新流水线。



下载 CAR-CLI

加载远程配置文件到当前工作目录。
cd workdir

wget "your config file url"
执行如下脚本,下载命令行工具。
cd workdir

mkdir pkg && cd pkg
wget https://github.com/tencentyun/car-cli/releases/download/v1.0.0/car.zip
unzip car.zip
mv ./car/linux/car ../
cd ..

chmod +x car

下载新版本应用包

配置下述脚本来下载新版本应用包。
cd workdir

wget $PackageURL # 在流水线环境变量中配置PackageURL变量

新建版本

为已有应用创建新版本并上传新版本应用,最后发布新版本。
注意:
如果应用版本数量大于5,此脚本会自动删除最旧非使用中的版本。
cd workdir

# 查询对应应用的版本列表
output=$(./car describe-application-version --app-id $ApplicationID) #流水线环境变量配置ApplicationID
lineCount=$(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 $versionID
fi

# 因删除应用版本是异步操作,所以定时查询版本是否删除成功
waitTimes=0
while [ $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 1
done

# 根据PackageURL查询包名称和包类型
fileName=$(basename $PackageURL) # 流水线环境变量配置PackageURL
echo $fileName
fileType="${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