一、Jenkins实现项目tag版本方式发布
1.1 为什么要通过tag发布
- 实现tag版本上线方式思路
1.开发如果需要发布新版本,必须将当前的版本打上一个标签。
2.Jenkins需要让其脚本支持传参,比如用户传递v1.1则拉取项目的v1.1标签的代码。
1.2 安装Git Parameter插件
Git Parameter
1.3 使用插件配置Jenkins
1、在General配置gitlab的自定义参数
2、源码管理页面修改为通过tag拉取代码
3、构建页面的变化
1.4 gitlab给项目代码打标签
1、校验本地代码环境没有未提交的数据,否则会冲突!!!
[root@jenkins webhp]
nothing to commit, working directory clean
2、拉取最新代码
[root@jenkins webhp]
From 192.168.222.133:devops/webhp
* branch main -> FETCH_HEAD
Already up-to-date.
3、提交tag到本地仓库
[root@jenkins webhp]
[root@jenkins webhp]
v1.0
4、提交tag到远端仓库gitlab
[root@jenkins webhp]
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的前端项目的版本
2、修改索引页面
<h1 style="color: blue; text-align: center; width: 1500px; background-color:cornsilk; height: 50px;">强强科技集团-v2.0版本</h1>
3、建立标签v2.0
[root@jenkins webhp]
[root@jenkins webhp]
v1.0
v2.0
[root@jenkins webhp]
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]
webhp-gitlab项目-线上发布
2、修改线上发布脚本。通过tag发布
[root@jenkins ~]
DATE=$(date +%Y-%m-%d_%H)
webhp_dir="/root/webhp"
web_host="192.168.222.133"
Name=${DATE}-${git_version}
get_code(){
find $WORKSPACE -name "*tmp" | xargs rm -rf
tar -zcf /opt/webhp-${Name}.tar.gz -C $WORKSPACE .
}
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
二、Jenkins实现tag版本的回退
1.1 编写支持版本回退的脚本
1、增加回滚按钮根据,Jenkins Gerneal选择变量内容!!!
[root@jenkins ~]
DATE=$(date +%Y-%m-%d_%H)
webhp_dir="/root/webhp"
web_host="192.168.222.133"
Name=${DATE}-${git_version}
get_code(){
find $WORKSPACE -name "*tmp" | xargs rm -rf
tar -zcf /opt/webhp-${Name}.tar.gz -C $WORKSPACE .
}
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}"
}
if [ $deploy_env == "deploy" ]; then
deploy
elif [ $deploy_env == "rollback" ]; then
rollback
fi
1.2 Jenkins添加参数化构建选项参数变量
1、在General中配置选择参数
2、配置必要的选项
3、修改拉取代码后的构建脚本
4、构建页面变成了可以携带参数的构建方式
1.3 测试回滚发布操作
1、目前webhp是3.0版本
2、发布4.0
3、查看结果
4、测试回滚操作
5、查看回滚的结果