也许,时间见过我们
posts - 97,comments - 14,views - 24万

一、创建项目

填写项目名,关系到项目路径对应请谨慎命名

二、项目配置

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序号

posted on   画入新雪  阅读(927)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

Copyright ©2017 画入新雪
点击右上角即可分享
微信分享提示