跳转到内容

❧ shell脚本自动打tag标签

Terminal window
function push_tag()
{
#根据指定前缀获取最新的版本号
latelyTag=$(git tag --list 'use-main-*' | sort -V | tail -n 1)
#版本前缀
tagPre="use-main-"
#截取字符串,tag是变量名,#号是运算符,*$tagPre 表示从左边开始删除第一个$tagPre及左边的所有字符
version=${latelyTag#*$tagPre}
echo "最近版本:"$latelyTag
#按.分割字符串,变成3段
array=(${version//./ })
arrayLen=${#array[*]}
if [[ $arrayLen != 3 ]];then
echo "版本号长度不对,必须为 v1.x.x的格式"
read -p "按任意键关闭" -n 1
exit
fi
#版本号处理
newVersion=""
for (( i = 0; i < $arrayLen; i++ )); do
v=${array[i]}
if [[ $i == 2 ]];then
#第三位小版本+1
v=`expr $v + 1`
fi
newVersion+=$v"."
done
newVersion=${newVersion%?}
#拼接
newTag=${tagPre}${newVersion}
echo "新的版本:"$newTag
if git tag -l | grep -q $newTag;then
echo $newTag"已存在"
read -p "按任意键关闭" -n 1
exit
fi
# 执行打包
npm run build:prod
while true
do
read -r -p "确认继续打标签吗? [Y/n] " input
case $input in
[yY][eE][sS]|[yY])
# 提交并打标签
git add dist
git commit -m 'package-auto'
git push
git tag -a $newTag -m ""
git push origin $newTag
echo -e "\033[32m 执行完成! \033[0m"
exit 1
;;
[nN][oO]|[nN])
echo -e "\033[33m 执行中断! \033[0m"
exit 1
;;
*)
echo -e "\033[31m 输入错误,请重新输入>_< \033[0m"
;;
esac
done
}
push_tag