Jenkins-Git Parameter 插件实现指定版本的发布和回滚

embedded/2024/11/28 18:59:24/

在上一篇文章的基础设置上进行

1. 机器准备

开发10.0.0.204
gitlab10.0.0.201
jenkins10.0.0.200
web10.0.0.202

2. 开发主机

在开发机器上修改不同版本的前端页面,并打上标签

第一次修改

[root@dev wheel]#vim index.html 
[root@dev wheel]#git commit -am "1.0" 
[master 6914b4e] 1.0
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@dev wheel]#git tag v1.0
[root@dev wheel]#git push --all

第二次修改

[root@dev wheel]#vim index.html 
[root@dev wheel]#git commit -am "2.0" 
[master 6914b4e] 2.0
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@dev wheel]#git tag v2.0
[root@dev wheel]#git push --all

第三次修改

[root@dev wheel]#vim index.html 
[root@dev wheel]#git commit -am "3.0" 
[master 6914b4e] 3.0
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@dev wheel]#git tag v3.0
[root@dev wheel]#git push --all

上传所有标签

 [root@dev wheel]#git push --tags
总共 0(差异 0),复用 0(差异 0),包复用 0
To gitlab.lly.org:devops/wheel.git
 * [new tag]         v1.0 -> v1.0
 * [new tag]         v2.0 -> v2.0
 * [new tag]         v3.0 -> v3.0

3. jenkins 机器

项目发布和回滚一体的脚本

[root@jenkins scripts]#vim wheel-gitlab-deploy-rollback.sh 

HOST_LIST="
10.0.0.202"

APP=wheel

VERSION=`date +%F_%s`
DATA_PATH=/srv
#DATA_PATH=/srv/${APP}-${VERSION}
APP_PATH=/var/www/html

deploy(){
for host in $HOST_LIST;do
   ssh root@$host "mkdir -p  $DATA_PATH/${APP}-${VERSION}  && rm -rf ${APP_PATH}"
   scp -r *  root@$host:$DATA_PATH/${APP}-${VERSION}
   ssh root@$host ln -s $DATA_PATH/${APP}-${VERSION}  ${APP_PATH}
done
}

rollback() {
    for i in ${HOST_LIST};do
        CURRENT_VERISION=$(ssh root@$i "readlink $APP_PATH")
        CURRENT_VERISION=$(basename ${CURRENT_VERISION})
        echo ${CURRENT_VERISION}
        PRE_VERSION=$(ssh root@$i "ls -1 ${DATA_PATH} | grep -B1 ${CURRENT_VERISION}|head -n1 ")
        echo $PRE_VERSION
        ssh root@$i "rm -f  ${APP_PATH}&& ln -sv ${DATA_PATH}/${PRE_VERSION} ${APP_PATH}"
    done
}
case $1 in
deploy)
    deploy
    ;;
rollback)
    rollback
    ;;
*)
    echo "Usage: $0 deploy|rollback"
    ;;
esac

4. jenkins 工具 

jenkins 工具上添加任务(提前下载 git parameter 插件)

根据脚本中的两个函数填写选项参数,并设为变量

选择 git 参数,自动生成标签 

源码管理中,URL 和凭证对应选择(若是 http,则使用用户名密码认证凭证,若是 git,则使用key认证凭证) 

构建步骤选择 excute shell ,填写脚本绝对路径,后面跟上参数变量,运行时可指定函数

执行任务时,则可选择指定发布或是回滚,以及可指定版本

5. web 端验证

使用web 主机 ip 验证前端页面是否按照指定的版本显示 


http://www.ppmy.cn/embedded/141241.html

相关文章

LeetCode 0632.最小区间:优先队列

【LetMeFly】632.最小区间:优先队列 力扣题目链接:https://leetcode.cn/problems/smallest-range-covering-elements-from-k-lists/ 你有 k 个 非递减排列 的整数列表。找到一个 最小 区间,使得 k 个列表中的每个列表至少有一个数包含在其中…

【前端】JavaScript中的柯里化(Currying)详解及实现

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 💯前言💯什么是柯里化?💯柯里化的特点💯柯里化的简单示例💯通用的柯里化实现💯柯里化让代码更易读的原因&#x1f4af…

go语言怎么实现bash cmd里的mv功能?

在Go语言中实现类似于Bash命令行中的mv命令的功能,主要是通过文件系统的操作来完成的。mv命令可以用来移动文件或目录,也可以用来重命名文件或目录。在Go语言中,可以使用标准库中的os和io/ioutil包来实现这些功能。 以下是一个简单的例子&…

【数据结构专栏】二叉搜索树(Binary Search Tree)的剖析?

文章目录 🧨前言1、二叉搜索树的基本概念?2、二叉搜索树的节点结构组成?3、二叉搜索树的插入操作?4、二叉搜索树的删除操作?5、二叉搜索树的遍历?6、二叉搜索树的性能分析?🎉完整代码…

BERT简单理解;双向编码器优势

目录 BERT简单理解 一、BERT模型简单理解 二、BERT模型使用举例 三、BERT模型的优势 双向编码器优势 BERT简单理解 (Bidirectional Encoder Representations from Transformers)模型是一种预训练的自然语言处理(NLP)模型,由Google于2018年推出。以下是对BERT模型的简…

matlab代码--卷积神经网络的手写数字识别

1.cnn介绍 卷积神经网络(Convolutional Neural Network, CNN)是一种深度学习的算法,在图像和视频识别、图像分类、自然语言处理等领域有着广泛的应用。CNN的基本结构包括输入层、卷积层、池化层(Pooling Layer)、全连…

P1198 [JSOI2008] 最大数

P1198 [JSOI2008] 最大数https://www.luogu.com.cn/problem/P1198 牵制芝士:单调队列 思路: 我们的任务是找出一个区间最大值的 因为插入的数与上一次的答案有关 所以它是强制在线的(真无语了) 我们可以在每次插入时整一个叫…

Android 14之HIDL转AIDL通信

Android 14之HIDL转AIDL通信 1、interface接口1.1 接口变更1.2 生成hidl2aidl工具1.3 执行hidl2aidl指令1.4 修改aidl的Android.bp文件1.5 创建路径1.6 拷贝生成的aidl到1和current1.7 更新与冻结版本1.8 编译模块接口 2、服务端代码适配hal代码修改2.1 修改Android.bp的hidl依…