Jenkins项目配置shell脚本

使用jenkins构建项目的时候需要写shell脚本
增量上传jar包

shell脚本的位置

Jenkins项目配置shell脚本_第1张图片
Jenkins项目配置shell脚本_第2张图片
shell脚本的内容:

pwd
#cd到项目目录
cd ad-activiti/
f=$ForceUpdate
echo $f
if  $f ; then
	echo "强制更新"
	rm -rf md5.old
fi
#lib 目录是需要重新上传到服务器的依赖jar包目录
if [ ! -d "lib" ]; then
  #没有文件夹则创建
   mkdir lib
else
   #如果有文件夹则清空上次上传的文件
   echo "清空上次上传的文件"
   rm -rf ./lib/*
fi
files=$(ls ./target/lib/ad-common*.jar 2> /dev/null | wc -l); 
echo "判断是否存在ad-common文件:$files"
if [ "$files" != "0" ] ;then
#因为ad-common*每次重新生成,不管文件内容是否更改md5值都不一样,所以每次都重新上传,故将ad-common先移动到lib包中等待上传
echo "移动ad-common相关jar进行上传"
mv ./target/lib/ad-common*.jar ./lib 
fi
#如果是第一次构建
if [ ! -e "md5.old" ]; then
   #计算所有非ad-common*的文件md5的值放到md5.old中
   echo "首次上传,计算md5值"
   md5sum ./target/lib/* > md5.old
   #此次新增文件的个数
   insFilesCount=`ls ./target/lib/*.jar 2> /dev/null | wc -l`
   echo -e "`date +%Y%m%d` 新增文件共计 $insFilesCount 个 ">>insFiles.log
   if [ $insFilesCount!=0 ] ;then
   		echo -e "`date +%Y%m%d` 新增文件名为:">>insFiles.log
   		ls -rlt ./target/lib/*.jar|awk -F "/" '{print $4}'>>insFiles.log
   fi
	echo -e "\n \n">>insFiles.log
   #将所有文件都传到lib包中准备上传
   echo "移动所有文件到待上传文件夹下"
   mv ./target/lib/*.jar ./lib 
else
#非第一次构建
  if [ -e "md5.new" ]; then
	#如果存在遗留的md5.new则进行删除,后续会重新生成本次构建
    echo "存在遗留的md5.new,进行删除,后续会重新生成本次构建"
  	rm -rf md5.new
  fi
  #重新计算本次所有依赖测非ad-common*的jar包的md5值到md5.new中
  echo "计算本次所有依赖测非ad-common*的jar包的md5值到md5.new中"
  md5sum ./target/lib/* > md5.new

  #每次执行删除该执行文件(每次要上传的文件不一样)
  rm -rf mvJar.sh
  #循环比对新jar包中以前是否上传过
  while read -r line
  do
  	insFlagNum=`cat md5.old | grep "$line"|wc -l`
  	#若没有上传过则将移除此jar包的命令写到移除的执行文件中
  	if [ $insFlagNum -eq 0 ] ; then
  		#将移动jar包命令写入到执行脚本中
  		echo "mv `echo "$line"|awk '{print $2}'` ./lib">>mvJar.sh
  		#将新加入的jar包增量写到 md5sum.old 文件中
  		echo "$line">>md5.old 
  	fi
  done<"md5.new"
  #将新增的jar包移动到指定目录下
  if [ -e "mvJar.sh" ]; then
  	#移动jar包目录
  	sh mvJar.sh
  	#写入日志文件本次新增的jar包
  	#此次新增文件的个数
    insFilesCount=`cat mvJar.sh 2> /dev/null | wc -l`
    echo -e "`date +%Y%m%d` 新增文件共计 $insFilesCount 个 ">>insFiles.log
    echo -e "`date +%Y%m%d` 新增文件名为:">>insFiles.log
    while read -r insLine
    do
    	echo "$insLine"|awk '{print $2}'|awk -F "/" '{print $4}'>>insFiles.log
    done<"mvJar.sh"
	echo -e "\n \n">>insFiles.log
	echo -e "新增已完成 \n 共计新增 $insFilesCount 个文件"
  else
  	echo "本次构建无新增lib"
  fi
fi
echo "================="

你可能感兴趣的:(java,software,shell,java,jar,linux,jenkins)