一、Jenkins实现项目tag版本方式发布

1.1 为什么通过tag发布

#由于之前上线方式直接获取最新代码,那么会造成后期回退变的困难。那如果采用tag方式比如第一次上线v1.1、第二次上线v1.2、如果上线v1.2出现问题,那么我们可以快速回退至上一个版本v1.1。
- 实现tag版本上线方式思路

1.开发如果需要发布新版本,必须将当前的版本打上一个标签2.Jenkins需要让其脚本支持传参比如用户传递v1.1则拉取项目v1.1标签的代码#请结合之前的文章一查看呦!!!

1.2 安装Git Parameter插件

Git Parameter
#这个插件允许你在你的构建分配git分支、标签、拉取请求版本号作为参数
#主要是为了标签的功能!!!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3W1WJ3ML-1689342490734)(E:教学资料※笔记※复习assetsimage-20230711094313928.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qt2FluAw-1689342490735)(E:教学资料※笔记※复习assetsimage-20230711094532086.png)]

1.3 使用插件配置Jenkins

1、在General配置gitlab自定义参数
#设置变量名对应tag标签
2源码管理页面修改通过tag拉取代码
#默认通过指定分支。构建开始会先拉取代码workspace
3、构建页面的变化
#因为安装了git_parameter并且在配置中的Gemaral配置了采用结构化参数构建。所以显示可以通过tag进行发布!!!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N08IVAkm-1689342490736)(E:教学资料※笔记※复习assetsimage-20230711095427386.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nD1ouT2L-1689342490736)(E:教学资料※笔记※复习assetsimage-20230711095742446.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LNkrETuz-1689342490737)(E:教学资料※笔记※复习assetsimage-20230711100258801.png)]

1.4 gitlab项目代码打标签

1校验本地代码环境没有提交数据,否则会冲突!!!
[root@jenkins webhp]# git status
# On branch main
nothing to commit, working directory clean
2拉取最新代码
#正式环境可能别人已经发布过新的代码
[root@jenkins webhp]# git pull origin main
From 192.168.222.133:devops/webhp
 * branch            main       -> FETCH_HEAD
Already up-to-date.
3提交tag本地仓库
[root@jenkins webhp]# git tag -a "v1.0" -m "v1.0版本代码提交"		#新增标签并添加描述
#正常流程提交代码。本地没有改动后打标签。根据本地最新的代码进行标签的构建!!!
[root@jenkins webhp]# git tag
v1.0
4提交tag到远端仓库gitlab
[root@jenkins webhp]# git push origin v1.0						#推送远端仓库
Counting objects: 1, done.
Writing objects: 100% (1/1), 182 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@192.168.222.133:devops/webhp.git
 * [new tag]         v1.0 -> v1.0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9jEV03MX-1689342490737)(E:教学资料※笔记※复习assetsimage-20230711101754683.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qobAJuHS-1689342490737)(E:教学资料※笔记※复习assetsimage-20230711101827624.png)]

1.5 通过tab发布webhp项目

1查看目前nginx前端项目的版本
#之前做了nginx的配置默认访问的是webhp的前端项目!!!
2、修改索引页面
<h1 style="color: blue; text-align: center; width: 1500px; background-color:cornsilk; height: 50px;">强强科技集团-v2.0版本</h1>
3、建立标签v2.0
[root@jenkins webhp]# git tag -a "v2.0" -m "v2.0版本代码提交"
[root@jenkins webhp]# git tag
v1.0
v2.0
[root@jenkins webhp]# git push origin v2.0
Counting objects: 1, done.
Writing objects: 100% (1/1), 183 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@192.168.222.133:devops/webhp.git
 * [new tag]         v2.0 -> v2.0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BXdBCxdE-1689342490738)(E:教学资料※笔记※复习assetsimage-20230711102335641.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QE5bCLNs-1689342490738)(E:教学资料※笔记※复习assetsimage-20230711103131378.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZHeOThh8-1689342490738)(E:教学资料※笔记※复习assetsimage-20230711103524106.png)]

1.6 通过tag发布新版

1、jenkins服务器默认工作空间还是老版本
[root@jenkins workspace]# ls
webhp-gitlab项目-线上发布
2、修改线上发布脚本通过tag发布
#选择2.0开始构建
[root@jenkins ~]# cat /root/shell/webhp_publish_tag.sh 
#!/bin/bash
DATE=$(date +%Y-%m-%d_%H)      #定义时间变量
webhp_dir="/root/webhp"                                  #nginx指定前端路径
web_host="192.168.222.133"
#WORKSPACE="/var/lib/jenkins/workspace"         #注释获取Jenkins传入的内置变量。
Name=${DATE}-${git_version}             #git_version是在Jenkins项目配置中General中Git Parameter那里设置变量名字.就是tag

#思路
#1.Jenkins将Gitlab代码拉取至工作目录后,需先将项目代码打包

get_code(){
        find $WORKSPACE -name "*tmp" | xargs rm -rf                     #删除生成临时文件
        tar -zcf /opt/webhp-${Name}.tar.gz -C $WORKSPACE .      #将workspace目录下的内容压缩opt/webhp-data.tar.gz
        #WORKSPACE 是一个内置环境变量,它表示当前构建的工作目录每个 Jenkins 构建都会在主机创建一个唯一工作目录

}

copy_code(){
        scp -r /opt/webhp-${Name}.tar.gz root@${web_host}:/opt
        ssh root@${web_host} "mkdir -p /opt/webhp-${git_version} &amp;&amp; 
        tar -xf /opt/webhp-${Name}.tar.gz -C /opt/webhp-${git_version} &amp;&amp; 
        ls -l /opt &amp;&amp; 
        cp -rf ${webhp_dir} ${webhp_dir}.bak.${DATE} &amp;&amp; 
        rm -rf ${webhp_dir} &amp;&amp; 
        mv /opt/webhp-${git_version} ${webhp_dir}"
}

deploy(){
        get_code
        copy_code
}

deploy
3查看Jenkins的构建日志
#看到日志提示发布成功!!!
4、查看nginx结果
#完美发布成功!!!

5、git提取新的tag到本地
git fetch
git checkout v1.0			#切换tag代表不同的标签的状态代码!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CdYOSpuS-1689342490739)(E:教学资料※笔记※复习assetsimage-20230711103735441.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NbXWu2Zo-1689342490739)(E:教学资料※笔记※复习assetsimage-20230711104916995.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sg0ggz5s-1689342490739)(E:教学资料※笔记※复习assetsimage-20230711112520253.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-do3VMbvR-1689342490740)(E:教学资料※笔记※复习assetsimage-20230711112116832.png)]

二、Jenkins实现tag版本的回退

1.1 编写支持版本回退脚本

1、增加回滚按钮根据,Jenkins Gerneal选择变量内容!!!
[root@jenkins ~]# vim /root/shell/webhp_publish_tag_rollback.sh 
#!/bin/bash
DATE=$(date +%Y-%m-%d_%H)      #定义时间戳变量
webhp_dir="/root/webhp"                                  #nginx指定前端路径
web_host="192.168.222.133"
#WORKSPACE="/var/lib/jenkins/workspace"         #注释就获取Jenkins传入的内置变量。
Name=${DATE}-${git_version}             #git_version是在Jenkins项目配置中General中Git Parameter那里设置变量名字.就是tag

#思路
#1.Jenkins将Gitlab代码拉取至工作目录后,需先将项目代码打包

get_code(){
        find $WORKSPACE -name "*tmp" | xargs rm -rf                     #删除生成临时文件
        tar -zcf /opt/webhp-${Name}.tar.gz -C $WORKSPACE .      #将workspace目录下的内容压缩到opt/webhp-data.tar.gz
        #WORKSPACE 是一个内置的环境变量,它表示当前构建的工作目录每个 Jenkins 构建都会在主机上创建一个唯一的工作目录

}

copy_code(){
        scp -r /opt/webhp-${Name}.tar.gz root@${web_host}:/opt
        ssh root@${web_host} "mkdir -p /opt/webhp-${git_version} &amp;&amp; 
        tar -xf /opt/webhp-${Name}.tar.gz -C /opt/webhp-${git_version} && 
        ls -l /opt && 
        cp -rf ${webhp_dir} ${webhp_dir}.bak.${DATE} && 
        rm -rf ${webhp_dir} && 
        cp -rf  /opt/webhp-${git_version} ${webhp_dir}"
}

deploy(){
        get_code
        copy_code
}

rollback(){
	backfile=$(ssh root@${web_host} "find /opt/ -name "webhp-${git_version}" -type d")
	ssh root@${web_host} "ls -l /opt && 
	rm -rf ${webhp_dir} && 
	cp -rf  /opt/webhp-${git_version} ${webhp_dir}"
}

#根据Jenkins项目中配置的选项参数变量deploy_env的值来判断执行哪一个脚本函数部署脚本还是回退脚本
if [ $deploy_env == "deploy"  ]; then
   deploy
elif [ $deploy_env == "rollback" ]; then
   rollback
fi


#回退脚本通过本身前端机器解压后在/opt下存的备份文件进行上一版本的回退。无需在拉取等操作!!!

1.2 Jenkins添加参数化构建选项参数变量

1、在General中配置选择参数
#通过构建开始前选择的参数选定部署还是回退!!!
2、配置必要的选项
#名称判断条件
#选项是参数不同的参数不同运行方式
3、修改拉取代码后的构建脚本
#修改为支持回滚操作的脚本
4、构建页面变成了可以携带参数的构建方式
#这样可以快速回滚上线,无需人工操作!!!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mWa8Ony4-1689342490740)(E:教学资料※笔记※复习assetsimage-20230711163329539.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rxe8UUhI-1689342490740)(E:教学资料※笔记※复习assetsimage-20230711163754236.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Cz4kev7-1689342490741)(E:教学资料※笔记※复习assetsimage-20230711163850537.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DOV0pTUf-1689342490741)(E:教学资料※笔记※复习assetsimage-20230711164322578.png)]

1.3 测试回滚发布操作

1、目前webhp是3.0版本
#先发一个4.0确保web端机器的/opt下存在备份内容
2、发布4.0
#选择v4.0版本,
3、查看结果
#发布正常
4、测试回滚操作
#选择v3.0,点击rollback
5、查看回滚结果
#回滚正常。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rU7Mxixj-1689342490741)(E:教学资料※笔记※复习assetsimage-20230711164456310.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O3pSNrKl-1689342490742)(E:教学资料※笔记※复习assetsimage-20230711165303373.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YK6WCupP-1689342490742)(E:教学资料※笔记※复习assetsimage-20230711170631237.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aYBMFD6n-1689342490742)(E:教学资料※笔记※复习assetsimage-20230711171035954.png)]
择v3.0,点击rollback

在这里插入图片描述

原文地址:https://blog.csdn.net/weixin_57670650/article/details/131732074

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_45110.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注