一、创建项目
填写项目名,关系到项目路径对应请谨慎命名
二、项目配置
1.配置字符串参数和选项参数
2.代码仓库配置
3.构建环境
4.构筑脚本配置
5.点击左下方的保存或者应用
三、使用方法
1.发布回退流程
2.查看历史发布信息
四、基础脚本(会自动对应到所在项目或项目文件夹):
1 TmpDir=${WORKSPACE} 2 Date=$(date "+%Y%m%d-%H%M%S") 3 LogFile=/var/log/deploy/"$Status"_$(date "+%Y%m%d").log 4 5 case $Status in 6 Deploy) 7 path="/bak$TmpDir/$Time" #创建每次要备份的目录 8 if [ -d $path ]; 9 then 10 echo "The files is already exists " >> $LogFile 11 else 12 mkdir -p $path 13 chmod 777 $path 14 fi 15 cp -rf $TmpDir/* $path #将打包好的文件备份到相应目录,覆盖已存在的目标 16 echo "$Date Completing! Project:${WORKSPACE} Status:$Status Version: $Time BuildNum:${BUILD_NUMBER}" >> $LogFile 17 ;; 18 Rollback) 19 cd /bak$TmpDir/$Time #进入备份目录 20 cp -rf * $TmpDir/ #将备份拷贝到程序打包目录中,并覆盖之前的包 21 echo "$Date Completing! Project:${WORKSPACE} Status:$Status Version:$Time BuildNum:${BUILD_NUMBER}" >> $LogFile 22 ;; 23 *) 24 exit 25 ;; 26 esac 27 28 ReservedNum=30 #保留文件数 29 FileDir="/bak$TmpDir/" 30 31 cd $FileDir #进入备份目录 32 FileNum=$(ls -l | grep '^d' | wc -l) #当前有几个文件夹,即几个备份 33 34 while(( $FileNum > $ReservedNum)) 35 do 36 OldFile=$(ls -rt | head -1) #获取最旧的那个备份文件夹 37 echo $date "$Date Delete File:"$OldFile >> $LogFile 38 rm -rf $FileDir/$OldFile 39 let "FileNum--" 40 done 41 42 # 下面放具体项目发布脚本指令(即由ci服务器分发到线上服务)
五、相关须知:
*ci 回退备份文件目录 /bak/var/lib/jenkins/workspace/xxx项目名/
需要时可手动查找相关版本项目文件,目前脚本内只保留单项目或目录30份备份文件,可根据需要更改脚本内参数30为既定量
*ci 发布回退日志文件目录 /var/log/deploy/ 会记录当天的发布和回退情况
示例:
20201012-165752 Completing! Project:/var/lib/jenkins/workspace/test-ci-backend Status:Deploy Version: 2020101224 BuildNum:84
20201012-164711 Completing! Project:/var/lib/jenkins/workspace/test-ci-backend Status:Rollback Version:2020101221 BuildNum:83
对应了秒级项目发布时间,项目所在位置即哪个项目,发布回退状态,发布和回退时填写时间版本号,发布的序号对应jenkins序号