一、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分支、标签、拉取请求或版本号作为参数。
#主要是为了标签的功能!!!
1.3 使用插件配置Jenkins
1、在General配置gitlab的自定义参数
#设置变量名对应tag标签
2、源码管理页面修改为通过tag拉取代码
#默认是通过指定的分支。构建开始会先拉取代码到workspace
3、构建页面的变化
#因为安装了git_parameter并且在配置中的Gemaral配置了采用结构化参数构建。所以显示可以通过tag进行发布!!!
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
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
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} &&
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} &&
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代表不同的标签的状态代码!
二、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} &&
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、构建页面变成了可以携带参数的构建方式
#这样可以快速回滚和上线,无需人工操作!!!
1.3 测试回滚发布操作
1、目前webhp是3.0版本
#先发一个4.0确保web端机器的/opt下存在备份内容
2、发布4.0
#选择v4.0版本,
3、查看结果
#发布正常
4、测试回滚操作
#选择v3.0,点击rollback
5、查看回滚的结果
#回滚正常。
原文地址:https://blog.csdn.net/weixin_57670650/article/details/131732074
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_45110.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。