用Shell写的游戏客户端更新脚本
之前我们更新客户端的方法是,一个脚本,把svn的客户端版本检出来。但是每次都重复检出。
由于现在客户端已经有800+M,每次检出基本都需要等待5分钟左右。因此应测试要求,写了个脚本,每次只检出更新部分。其实只是利用了svn的update命令。
脚本实现功能:
1、如果首次使用该脚本,在制定目录中创建一个用于保存版本的文件。然后检出项目。
2、如果不是首次使用,那么更新步骤1检出的项目。然后修改步骤1的版本号(递增),将版本号写入加载flash的jsp配置中。
其中还涉及一些对额外情况的处理,比如如果检出的目标位置已经存在同名文件,那么打包备份这个文件,然后再继续执行正常操作等细微逻辑。
刚看Shell不久,也只是利用零散时间看的。写的不好,欢迎提出。
- #!/bin/sh
- ##########################################
- # 客户端版本更新系统
- ##########################################
- # CLIENT_INIT_VERSION 客户端新版本,默认是0
- # CLIENT_OLD_VERSION 客户端旧版本(存放在VERSION_FILE指定的文件中),当没有时取CLIENT_INIT_VERSION
- # CLIENT_NEW_VERSION 客户端新版本,www.linuxidc.com默认是CLIENT_OLD_VERSION+1
- # VERSION_FILE 存放上次版本的文件
- CLIENT_INIT_VERSION='0'
- CLIENT_OLD_VERSION='0'
- CLIENT_NEW_VERSION=''
- VERSION_FILE='client_version.txt'
- # CLIENT_BASE_PATH 放置前端的目录
- # VERSION_CONFIG_FILE 服务器前端版本配置文件
- # SVN_PATH 前端SVN地址
- CLIENT_BASE_PATH='/data/ylzj_test/img/'
- VERSION_CONFIG_FILE='/data/ylzj_test/sljweb/version.jsp'
- SVN_PATH='http://192.168.14.138:8080/svn/slj_release/ylzj'
- CLIENT_NEW_PATH=''
- CLIENT_OLD_PATH=''
- #更新是否成功
- IF_SUCC=''
- initVersionFileIfNoExist(){
- if [ -f $VERSION_FILE ];then
- echo '[INFO] Welcome to use Client Update System.'
- else
- echo '[INFO] Welcome to use Client Update System.'
- echo $CLIENT_INIT_VERSION > $VERSION_FILE
- if [ -f $VERSION_FILE ];then
- echo '[SUCC] CREATE VERSION FILE '$VERSION_FILE
- else
- echo '[FAIL] CREATE VERSION FILE '$VERSION_FILE
- fi
- fi
- }
- initClientNewVersion(){
- CLIENT_OLD_VERSION=$(cat $VERSION_FILE)
- echo "[INFO] The old client version is : "$CLIENT_OLD_VERSION
- CLIENT_NEW_VERSION=$(expr $(cat $VERSION_FILE) + 1)
- echo '[INFO] The new client version is : '$CLIENT_NEW_VERSION
- CLIENT_NEW_PATH=$CLIENT_BASE_PATH$CLIENT_NEW_VERSION
- CLIENT_OLD_PATH=$CLIENT_BASE_PATH$CLIENT_OLD_VERSION
- }
- checkIfFileExistAndDoSomething(){
- tmpvar=$1
- subpath=${tmpvar%/*}
- existFile=${tmpvar##*/}
- TMP_BACKUP_FLASH_TAR=''
- if [ -f $1 -o -d $1 ];then
- echo '[WARN] Flash dir '$1' has exists, it will be tar and backup.'
- TMP_BACKUP_FLASH_TAR=$existFile'.tar'
- cd $subpath
- echo '[INFO] Archieving '$existFile' to '$TMP_BACKUP_FLASH_TAR
- tar -zcvf $TMP_BACKUP_FLASH_TAR $existFile
- echo '[INFO] Removing dir '$existFile
- rm -rf $existFile
- cd -
- fi
- unset tmpvar
- unset subpath
- unset existFile
- unset TMP_BACKUP_FLASH_TAR
- }
- prepareClientDir(){
- checkIfFileExistAndDoSomething $CLIENT_NEW_PATH
- if [ $CLIENT_INIT_VERSION -eq $CLIENT_OLD_VERSION ];then
- #第一次使用
- #创建目录
- echo '[INFO] First create the flash dir '$CLIENT_NEW_PATH
- mkdir -p $CLIENT_NEW_PATH
- else
- #非第一次使用,修改flash名字
- echo '[INFO] Copying '$CLIENT_OLD_PATH' to '$CLIENT_NEW_PATH
- mv $CLIENT_OLD_PATH $CLIENT_NEW_PATH
- fi
- if [ -d $CLIENT_NEW_PATH ];then
- IF_SUCC='TRUE'
- fi
- }
- storeThisVersionIfSucc(){
- if [ -n $IF_SUCC ]; then
- echo $CLIENT_NEW_VERSION > $VERSION_FILE
- echo "<%String version = \"$CLIENT_NEW_VERSION\";%>" > $VERSION_CONFIG_FILE
- fi
- }
- createClient(){
- echo '[INFO] Checking out flash version...'
- svn co $SVN_PATH $CLIENT_NEW_PATH --username=bqli --password=123456
- echo '[INFO] Checking out has finished.'
- }
- updateClient(){
- echo '[INFO] Updating flash version...'
- svn update $CLIENT_NEW_PATH
- echo '[INFO] Updating has finished.'
- }
- createOrUpdateClient(){
- if [ $CLIENT_INIT_VERSION -eq $CLIENT_OLD_VERSION ];then
- createClient
- else
- updateClient
- fi
- }
- echoStartInfo(){
- echo '#################################################'
- echo '# 欢迎使用客户端版本更新系统V1.0'
- echo '#################################################'
- }
- echoEndInfo(){
- echo '[SUCC] Finished.'
- }
- clear
- echoStartInfo
- initVersionFileIfNoExist
- initClientNewVersion
- prepareClientDir
- createOrUpdateClient
- storeThisVersionIfSucc
- echoEndInfo
相关推荐
huha 2020-10-16
laisean 2020-11-11
大牛牛 2020-10-30
firefaith 2020-10-30
liguojia 2020-10-20
wangzhaotongalex 2020-10-20
以梦为马不负韶华 2020-10-20
JohnYork 2020-10-16
Julyth 2020-10-16
applecarelte 2020-10-16
laisean 2020-09-27
flycappuccino 2020-09-27
liguojia 2020-09-27
wangzhaotongalex 2020-09-22
流年浅滩 2020-10-23
liujianhua 2020-10-22
woaimeinuo 2020-10-21
tufeiax 2020-09-03
laisean 2020-09-01