167 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/usr/bin/bash
 | 
						||
 | 
						||
# 检查是否指定了将要发布的应用名称
 | 
						||
# 使用 `-z` 命令检查变量是否为空
 | 
						||
if [ -z "$1" ]; then
 | 
						||
    echo "No APP name specified : $0"
 | 
						||
    exit 2
 | 
						||
fi
 | 
						||
 | 
						||
## 定义相关函数
 | 
						||
## 检查 Git 源码是否完全提交了,完全提交就返回0
 | 
						||
function checkGitSources {
 | 
						||
    #local input="$1"
 | 
						||
    #echo "The string is: $input"
 | 
						||
	git config --global --add safe.directory `pwd`
 | 
						||
	if [[ -n $(git diff --stat)  ]]
 | 
						||
    then
 | 
						||
		local result="Source is no commit completely."
 | 
						||
	    echo $result
 | 
						||
	    # 脚本调试时使用
 | 
						||
	    #return 0
 | 
						||
	    # 正式检查源码时使用
 | 
						||
	    return 1
 | 
						||
    fi
 | 
						||
    local result="Git Source Check OK."
 | 
						||
	echo $result
 | 
						||
    return 0
 | 
						||
}
 | 
						||
 | 
						||
function askAddWorkflowsTag {
 | 
						||
	read answer
 | 
						||
	if [[ $answer =~ ^[Yy]$ ]]; then
 | 
						||
	    #echo "You chose yes."
 | 
						||
	    return 1
 | 
						||
	else
 | 
						||
	    #echo "You chose no."
 | 
						||
	    return 0
 | 
						||
	fi
 | 
						||
}
 | 
						||
 | 
						||
function addWinBoLLTag {
 | 
						||
	# 就读取脚本 .winboll/winboll_app_build.gradle 生成的 publishVersion。
 | 
						||
    # 如果文件中有 publishVersion 这一项,
 | 
						||
	# 使用grep找到包含"publishVersion="的那一行,然后用awk提取其后的值
 | 
						||
	PUBLISH_VERSION=$(grep -o "publishVersion=.*" $1/build.properties | awk -F '=' '{print $2}')
 | 
						||
	echo "< $1/build.properties publishVersion : ${PUBLISH_VERSION} >"
 | 
						||
	## 设新的 WinBoLL 标签
 | 
						||
	# 脚本调试时使用
 | 
						||
	#tag="projectname-v7.6.4-test1"
 | 
						||
	# 正式设置标签时使用
 | 
						||
	tag=$1"-v"${PUBLISH_VERSION}
 | 
						||
	echo "< WinBoLL Tag To: $tag >";
 | 
						||
	# 检查是否已经添加了 WinBoLL Tag
 | 
						||
	if [ "$(git tag -l ${tag})" == "${tag}" ]; then
 | 
						||
        echo -e "< WinBoLL Tag ${tag} exist! >"
 | 
						||
        return 1 # WinBoLL标签重复
 | 
						||
    fi
 | 
						||
    # 添加WinBoLL标签
 | 
						||
	git tag -a ${tag} -F $1/app_update_description.txt
 | 
						||
    return 0
 | 
						||
}
 | 
						||
 | 
						||
function addWorkflowsTag {
 | 
						||
	# 就读取脚本 .winboll/winboll_app_build.gradle 生成的 baseBetaVersion。
 | 
						||
    # 如果文件中有 baseBetaVersion 这一项,
 | 
						||
	# 使用grep找到包含"baseBetaVersion="的那一行,然后用awk提取其后的值
 | 
						||
	BASE_BETA_VERSION=$(grep -o "baseBetaVersion=.*" $1/build.properties | awk -F '=' '{print $2}')
 | 
						||
	echo "< $1/build.properties baseBetaVersion : ${BASE_BETA_VERSION} >"
 | 
						||
	## 设新的 workflows 标签
 | 
						||
	# 脚本调试时使用
 | 
						||
	#tag="projectname-v7.6.4-beta"
 | 
						||
	# 正式设置标签时使用
 | 
						||
	tag=$1"-v"${BASE_BETA_VERSION}-beta
 | 
						||
	echo "< Workflows Tag To: $tag >";
 | 
						||
	# 检查是否已经添加了工作流 Tag
 | 
						||
	if [ "$(git tag -l ${tag})" == "${tag}" ]; then
 | 
						||
        echo -e "< Github Workflows Tag ${tag} exist! >"
 | 
						||
        return 1 # 工作流标签重复
 | 
						||
    fi
 | 
						||
    # 添加工作流标签
 | 
						||
	git tag -a ${tag} -F $1/app_update_description.txt
 | 
						||
    return 0
 | 
						||
}
 | 
						||
 | 
						||
## 开始执行脚本
 | 
						||
echo -e "Current dir : \n"`pwd`
 | 
						||
# 检查当前目录是否是项目根目录
 | 
						||
if [[ -e $1/build.properties ]]; then
 | 
						||
    echo "The $1/build.properties file exists."
 | 
						||
    echo -e "Work dir correctly."
 | 
						||
else
 | 
						||
    echo "The $1/build.properties file does not exist."
 | 
						||
    echo "尝试进入根目录"
 | 
						||
    # 进入项目根目录
 | 
						||
    cd ..
 | 
						||
fi
 | 
						||
## 本脚本需要在项目根目录下执行
 | 
						||
echo -e "Current dir : \n"`pwd`
 | 
						||
# 检查当前目录是否是项目根目录
 | 
						||
if [[ -e $1/build.properties ]]; then
 | 
						||
    echo "The $1/build.properties file exists."
 | 
						||
    echo -e "Work dir correctly."
 | 
						||
else
 | 
						||
    echo "The $1/build.properties file does not exist."
 | 
						||
    echo -e "Work dir error."
 | 
						||
    exit 1
 | 
						||
fi
 | 
						||
 | 
						||
# 检查源码状态
 | 
						||
result=$(checkGitSources)
 | 
						||
if [[ $? -eq 0 ]]; then
 | 
						||
    echo $result
 | 
						||
    # 如果Git已经提交了所有代码就执行标签和应用发布操作
 | 
						||
 | 
						||
    # 预先询问是否添加工作流标签
 | 
						||
    #echo "Add Github Workflows Tag? (yes/No)"
 | 
						||
	#result=$(askAddWorkflowsTag)
 | 
						||
	#nAskAddWorkflowsTag=$?
 | 
						||
	#echo $result
 | 
						||
 | 
						||
    # 发布应用
 | 
						||
	echo "Publishing WinBoLL APK ..."
 | 
						||
	# 脚本调试时使用
 | 
						||
	#bash gradlew :$1:assembleBetaDebug
 | 
						||
	# 正式发布
 | 
						||
    bash gradlew :$1:assembleStageRelease
 | 
						||
    echo "Publishing WinBoLL APK OK."
 | 
						||
    
 | 
						||
    # 添加 WinBoLL 标签
 | 
						||
    result=$(addWinBoLLTag $1)
 | 
						||
    echo $result
 | 
						||
	if [[ $? -eq 0 ]]; then
 | 
						||
	    echo $result
 | 
						||
    	# WinBoLL 标签添加成功
 | 
						||
	else
 | 
						||
    	echo -e "${0}: addWinBoLLTag $1\n${result}\nAdd WinBoLL tag cancel."
 | 
						||
        exit 1 # addWinBoLLTag 异常
 | 
						||
	fi
 | 
						||
    
 | 
						||
    # 添加 GitHub 工作流标签
 | 
						||
	#if [[ $nAskAddWorkflowsTag -eq 1 ]]; then
 | 
						||
	    # 如果用户选择添加工作流标签
 | 
						||
    	#result=$(addWorkflowsTag $1)
 | 
						||
		#if [[ $? -eq 0 ]]; then
 | 
						||
		#    echo $result
 | 
						||
		    # 工作流标签添加成功
 | 
						||
		#else
 | 
						||
			#echo -e "${0}: addWorkflowsTag $1\n${result}\nAdd workflows tag cancel."
 | 
						||
			#exit 1 # addWorkflowsTag 异常
 | 
						||
		#fi
 | 
						||
	#fi
 | 
						||
	
 | 
						||
	## 清理更新描述文件内容
 | 
						||
	echo "" > $1/app_update_description.txt
 | 
						||
	
 | 
						||
	# 设置新版本开发参数配置
 | 
						||
	# 提交配置
 | 
						||
	git add .
 | 
						||
	git commit -m "<$1>Start New Stage Version."
 | 
						||
	echo "Push sources to git repositories ..."
 | 
						||
    # 推送源码到所有仓库
 | 
						||
    git push origin && git push origin --tags
 | 
						||
else
 | 
						||
	echo -e "${0}: checkGitSources\n${result}\nShell cancel."
 | 
						||
	exit 1 # checkGitSources 异常
 | 
						||
fi
 |