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
|