最近在优化持续集成平台,原来耗时1个半小时,现在优化到只需要15分钟即可。而从git上拉取代码的时间从15分钟降低到了12秒。
原来的打包,为了避免Gradle在Build过程中的缓存影响打包
git clone所有仓库mv到对应的目录下提供了Git仓库的缓存,只有第一次更新,后续增量更新代码,再cp到构建目录下进行打包
git clone代码,后续都会进行git pull增量更新代码cp 到构建的目录下mv到对应的目录下在Shell中定义函数,与其他语言差不多,只是参数不用指定,使用$1则代表获取第一个参数,同理$2,$3...则代表对应的参数,而在调用时,使用空格即可传递参数。
cloneOrUpdateRespority(){
# 定义第一个参数为仓库名
respority=$1
echo $respority
}
##调用函数
cloneOrUpdateRespority test通过-d "test"来判断文件夹是否存在
if [ -d 'test' ] && [ -d "${test}/.git" ];then
echo "Git仓库存在"
else
echo "Git仓库不存在"
fi通过使用if-then-elseif-else-fi来完成if语句的判断
if后的&&以及||的逻辑判断则需要使用多个[]来判断[]的前后都需要加空格来分割语句判断,否则会报警告line 9: [: missing "]" if-fi的时候,必须要配对,也就是5个if就需要有5个fi,否则就会报[Syntax Error: Unexpected End of File] if [ -d 'test' ] && [ -d "${test}/.git" ];then
# 存在test以及test中的.git,则认为test库曾经被拉到本地
cd ${respority}
git reset --hard HEAD
git pull
cd ..
else
#如果不存在,则需要clone
git clone -b ${Branch_Name} giturl/${respority} --depth 1
fi