Jenkins实现集群代码部署与回滚

从零构建:Jenkins与Kubernetes集成的完整指南 本文详细介绍了Jenkins与K8S的集成部署流程。首先在Ubuntu系统上部署Jenkins服务,然后通过Git将医疗项目代码推送到Gitee代码仓库,并编写Dockerfile和构建脚本。接着配置Jenkins与Harbor私有仓库集成,实现Docker镜像的自动构建和推送。最后在K8S集群中创建Deployment和Service资源,通过Jenkins实现项目的自动化部署和版本回滚功能。整个流程涵盖了从代码管理到持续集成再到容器化部署的完整DevOps实践,实现了测试环境的自动化发布和回滚能力。 阅读详情

实验环境与规划
 提前配置好gitlab服务,能够正确提交和拉取代码,Jenkins根据项目的标签版本选择性的拉取项目代码并通过执行脚本自动部署到后端的web服务器上,这里的web服务使用的是nginx,可以实现热部署,不需要暂停服务。
在这里插入图片描述
环境准备

#web服务器上安装nginx
#修改配置文件,自定义静态页面存放路径
vim /etc/nginx/nginx.conf
server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        #root         /usr/share/nginx/html;
        root         /data/web/html/;
        …………
systemctl restart nginx

#gitlab服务器要和Jenkins服务密钥认证,gitlab上存放公钥,Jenkins上存放私钥,并且Jenkins也要和web端密钥认证
#gitlab端创建项目名称和程序端提交代码到gitlab服务器
mkdir /data/ngxweb -p && cd /data/ngxweb      #创建项目目录并初始化
git init          
git remote add origin git@172.18.6.216:devops/ngxweb.git

#分别创建三个标签项目,并push到gitlab服务
echo "jenkins deploy nginx web service-devops-v1.2" > index.html
git add .
git commit -m "v1.2"
git tag -a "v1.2" -m "v1.2"
git push origin v1.2

echo "jenkins deploy nginx web service-devops-v1.3" > index.html
git add .
git commit -m "v1.3"
git tag -a "v1.3" -m "v1.3"
git push origin v1.3

echo "jenkins deploy nginx web service-devops-v1.5" > index.html
git add .
git commit -m "v1.5"
git tag -a "v1.5" -m "v1.5"
git push origin v1.5
#Jenkins服务端配置
#查看gitlab服务项目目录

在这里插入图片描述
Jenkins端配置
点击新建任务,输入任务名称,选择创建一个自由风格的项目,点击确认
安装git parameper插件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编写自动化部署与回滚脚本

vim deploy_nginx.sh
#!/bin/bash
WEB_SERVER="
192.168.131.58
192.168.131.78
"
DATE=$(date +%F:%H-%M-%S)
NAME=${DATE}-${git_version}         #日期加版本号

get_copy(){       #拉取代码并打包
        cd ${WORKSPACE}                #项目的绝对路径变量,即/var/lib/jenkins/workspace/devopslab
        tar czvf /opt/ngxweb-${NAME}.tar.gz ./*
}

scp_ngxweb(){        #远程复制并部署项目
for IP in $WEB_SERVER
do
	scp /opt/ngxweb-${NAME}.tar.gz root@${IP}:/opt/
	ssh root@${IP} "mkdir /data/web/html-${NAME} -p && \
	tar xf /opt/ngxweb-${NAME}.tar.gz -C /data/web/html-${NAME}/ && \
	rm -rf /data/web/html && ln -s /data/web/html-${NAME} /data/web/html && \
	/usr/sbin/nginx -s reload"
done
}
#版本回滚函数
back_ngxweb(){
for IP in $WEB_SERVER
do      back_version=$(ssh root@${IP} "find /data/web/ -maxdepth 1 | grep "html.*-${git_version}"")  #取到上需要回滚的版本项目目录
        ssh root@${IP} "rm -rf /data/web/html && ln -s ${back_version} /data/web/html"   #把取到的版本目录软连接到html
done
}
#版本升级部署函数
deploy_ngxweb(){
	get_copy
	scp_ngxweb
}
#通过if判断,如果选择是deploy,即部署项目,在判断此项目是否已经部署过
if [ $deploy_env == "deploy" ];then        
	if [ ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then
		echo "您已经部署过 ${git_version} 版本的项目了"  #部署过则返回此句,退出
		exit 1
	else
		deploy_ngxweb
	fi
elif [ $deploy_env == "rollback" ];then
	back_ngxweb    #如果选择回滚则执行回滚函数
fi

chmod +x /data/deploy_nginx.sh       #添加执行权限

在这里插入图片描述
保存后执行如下步骤:
在这里插入图片描述
选择部署v1.2版本:
在这里插入图片描述
此时查看web服务器:
在这里插入图片描述
在这里插入图片描述
部署成功,再测试部署v1.3和v1.5后查看项目目录,发现所有的版本项目已经被复制并解压到设定目录:
在这里插入图片描述
测试回滚版本:
现在是v1.5版本
在这里插入图片描述
测试再回滚到v1.2
在这里插入图片描述

在这里插入图片描述
测试成功
在这里插入图片描述
当部署已部署过的项目时,则提示部署重复:
在这里插入图片描述

微服务CI/CD流水线:Jenkins+GitLab+Harbor+K8s 微服务架构将单体应用拆分为多个独立服务,提升了迭代效率,也让部署和运维的复杂度成倍增加。面对频繁的代码提交和环境切换,基于容器的持续集成与持续交付(CI/CD)成为微服务团队的必备基础设施。容器化技术打包应用与依赖,而容器编排平台Kubernetes(K8s)提供调度、扩缩容和滚动更新能力。在典型工具链中,GitLab负责代码托管,Jenkins承担流水线编排,Harbor提供镜像仓库,K8s运行微服务实例,四者组合可构建从代码提交到自动部署的完整链路。结合真实项目经验,详细讲解这套自动化部署流水线的搭建步 阅读详情

相关推荐

GitOps 部署实战指南(CICD)

互联网上多数 GitOps 教程要么停留在理论,要么只有简单示例,很少覆盖从环境准备到生产部署的完整流程。常遇到 ArgoCD 与 Traefik 集成、私有 Harbor 仓库配置、Jenkins 无缝对接等实际问题。这篇《GitOps 部署实战指南 (CICD)》基于生产环境实战经验,从基础概念讲起,一步步带你搭建完整、生产可用的 GitOps 部署体系,解决你在实践中遇到的问题。

求知若渴,虚心若愚。 200

k8s结合jenkins实现DevOps

【代码】k8s结合jenkins实现DevOps。

Kason_iWiki 2004

Windows下用Anaconda安装d2l库避坑指南(附PermissionError解决方案)

本文详细介绍了在Windows系统下使用Anaconda安装d2l库的完整指南,特别针对常见的PermissionError问题提供了多种解决方案。从环境准备到库安装,再到VSCode配置和数据路径处理,帮助读者顺利搭建深度学习环境并运行《动手学深度学习》的代码示例。

3a9bq4r8t2y的博客 225

jenkins补充-编写自动化脚本实现devops 流水线和回滚等操作

devopsrollbackdeploygittomcattesttarhaproxykeepalivedjenkins jenkins补充-编写自动化脚本实现devops 流水线和回滚等操作 自动化部署脚本 基于参数流程控制是部署还是回滚 deploy rollback_last_version 要实现对服务器分批次上线 host1 host2 hostall 要实现自动...

weixin_30826095的博客 577

2. Netty使用JSerialComm进行串口读取(二)

现在开始处理这些问题 第一个问题:串口读取超时异常一路传播到最后也没有处理。 ​ 第二个问题:即使处理了该异常,程序仍然退出,这不能满足一些实际使用要求需求。该问题与设置很长的读取超时时间没关系,无论多长到时间后总会退出。

s3c2410的博客 2462

B0505S选型

    使用B0505S-1W已经有一段时间了,一直以来使用的是下面的电路,该电路摘自《CAN总线嵌入式开发——从入门到实战》一书。 参考金升阳的用户手册,手册上写道: 为了确保该模块能够高效可靠的工作,使用时,其输出最小负载不能小于额定负载的10%。若您所需功率确实较小,请在输出端并联一个电阻(电阻消耗功率与实际使用功率之和大于等于10%的额定功率)        由于使用该电源模...

动感小麦兜的博客 1万+

GitLab与Jenkins备份和回滚——Devops(二)

接上一篇博文《GitLab与Jenkins自动部署——Devops(一) 》道,上一篇博文每次构建版本之后,老的版本都没了,这样如果出现严重bug想要恢复到上一个正常版本就很麻烦,那么本次就配置一下Jenkins自动备份、手动发布和回滚 首先预设选项,这里的名称是之后需要用到的变量名 根据之前的配置,本次构建发布或者回滚版本之后还是可以沿用原来自动启动的代码,就不需要cd到目录下去手动启动了 同...

Michael Zhan的博客 634

【问题解析】Matlab Function的易错点(Variable Size)

Matlab Function的易错点

CrazyRabbit的博客 9868

devops学习(五) Jenkins 简单完成持续部署

devops 持续部署(上)

默子昂 786

远距离长航时低成本泡沫垂直起降固定翼无人机技术详解

该技术通过采用泡沫材料制造无人机机体,并结合高效的垂直起降与固定翼飞行机制,实现了低成本、长航时、远距离的飞行能力。然而,需要注意的是,泡沫材料在强度和耐候性方面可能较传统金属材料有所不足,因此在设计和制造过程中需要采取额外的加固和防护措施。用于森林防火、水域监测、空气质量检测等场景,通过搭载相应的传感器和摄像设备,对大范围区域进行高效、精准的监测。- 增强智能化水平:集成更多先进的传感器、算法和人工智能技术,提升无人机的自主决策能力和作业效率。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1201

搭建问答系统

数据描述 import docx import jieba from gensim.models import Word2Vec import os import numpy as np import pickle as pk import warnings from copy import deepcopy warnings.filterwarnings("ignore") from mu...

微信号:RunsenLiu 1840

基于Jenkins打造符合DevOps能力成熟度三级标准的持续集成流水线

DevOps的核心是自动化,自动化的核心是标准化。而DevOps最重要的一环节是持续交付,持续交付中建设的重点是流水线,所以如何打造标准的持续交付流水线则为DevOps建设中最重要的一环,也是评估DevOps能力的一个重要的打分点。 本文内容参照《研发运营一体化(DevOps)能力成熟度模型 第3部分:持续交付》,基于jenkins,对持续集成流水线建设的一些关键点进行技术应答,带领大家把方法论...

JFrog技术博客 710

机器视觉应用工程师职位深度解析与面试指南

广东奥普特科技招聘机器视觉应用工程师,要求大专以上理工科专业背景,熟悉C/C++或PLC编程,具备自动化设备调试经验。岗位职责包括视觉项目方案评估、系统安装调试、售后技术支持及异常处理,需接受外派出差。该职位面向专业对口的应届生或实习生,强调动手能力、沟通技巧和吃苦耐劳精神。机器视觉工程师需掌握图像处理算法、硬件配置等核心技术,在工业自动化领域具有良好发展前景。求职者应注重编程能力和实践经验的积累,以胜任这一技术密集型岗位。

郑伟强dev的专栏 433

jenkins回滚

本次实验是依据一个已经有的项目进行 此地方可以设置历史构建保存数量,防止自己硬盘被撑爆 这里注意一下,scp复制的是jenkin项目的名称的一个文件,但是回滚的的id是gitlab项目中的 大小写格式酌情处理 回滚之前进行打包备份 修改代码: 下方的命令叉掉 然后就可以验证了:备份文件会放在/var/lib/jenkins/workspace/bak 输入不同的数字,以达到恢复到不同状态安装 选择之后只要报错就会收到电子邮件 yum安装一个ansible创建一个组 创建

guo_3472428370的博客 1584

Geogebra中级篇016—矩阵(Matrices)

在GeoGebra中,矩阵是一种强大的工具,广泛应用于线性代数、几何变换和数据处理等领域。通过矩阵,我们可以轻松实现复杂的计算和图形变换,如旋转、平移和缩放等操作。不仅如此,GeoGebra的矩阵功能还支持多种运算,如加法、乘法、求逆等,使得用户能够高效地处理线性方程组和向量空间问题。在本文中,我们将深入探讨GeoGebra中的矩阵功能,详细介绍如何创建矩阵、执行常见的矩阵运算,并通过实例展示这些操作在数学和工程应用中的实际价值。这篇文章将为你提供关于GeoGebra矩阵操作的全面指南。

八荒启-交互动画的博客 2584

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jenkins构建部署php项目

一、前期准备 代码发布服务器jenkins:47.103.2.240 PHP服务器[需要部署代码的服务器]:106.14.67.208,47.101.34.240 配置SSH免秘钥,使发布服务器和PHP服务器相互之间都能够免秘钥远程登陆 PHP服务器上启动rsync服务,centos默认启动 建议:Jenkins 与需要部署代码的服务器最好是同一个区域的主机,避免外网传输,影响传输速度 ...

dagebaobao的博客 3908

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Jenkins小项目—代码测试、部署、回滚、keepalived+haproxy调度至tomcat

1.分别配置两台tomcat后端服务的java环境 1)准备jdk8压缩包 [root@tomcat jdk]# pwd /usr/local/src/jdk root@tomcat jdk]# ls jdk-8u211-linux-x64.tar.gz 2)解压jdk压缩包当前目录下并创建软连接 [root@tomcat jdk]# tar xvf jdk-8u211-linux-x6...

caolun0691的博客 770

jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚

此文的方案支持回滚,支持回滚,支持回滚,重要的事情说三遍! 前言: 此文的解决方案,只能解决释放运维一半的工作量,为何一半?因为需要部署代码的服务器集群,都事先安装配置好项目运行所需的环境,例如java项目需要tomcat,php项目需要nginx+php-fpm等。 如果问有没有更好集群部署方案,都能连运行环境都统一自动化集群部署?答案肯定是有的,要用docker容器化集群,而不是服务器...

mlx212的专栏 5661

k8s资源监控与hpa实战-jenkins集成K8S集群实战

本文介绍了Kubernetes中的Projected卷和Metrics-Server组件的部署。Projected卷是一种特殊卷类型,可将Secret、ConfigMap、DownwardAPI和ServiceAccountToken四种数据源投射到同一挂载点,并通过YAML示例演示了其配置方法。Metrics-Server为K8S集群提供监控数据,支持"kubectl top"命令和HPA功能,文章详细说明了部署步骤,包括下载清单文件、配置参数和安装过程。此外,还解释了HPA(水平扩容

日常分享linux运维知识 2423

Jenkins环境部署

简介 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。 Jenkins是一个广泛用于持续构建的可视化Web工具,持续构建就是将项目自动化编译、打包、部署。通过规范化来完成,简单,繁琐,浪费时间的重复工作。 工作流程 1、开发人员提交代码到git仓库 2、Jenkins手动/定时构建项目 3、Jenkins拉取git仓库代码-》代码编译-》打包镜像-》推送到镜像仓

weixin_39218464的博客 1万+

3.Jenkins入门基础使用与Maven+SonarQube集成配置与实践

目录一览: Maven 集成配置与实践 ​SonarQube 集成配置与实践 WeiyiGeek Blog - 为了能到远方,脚下的每一步都不能少。 Tips : 本文章来源 Blog 站点或者WeiyiGeek公众账号 (技术交流、友链交换请邮我哟), 原文地址:https://mp.weixin.qq.com/s/DdTwyWF9gM9gBS4M72HXYg 微信公众号-WeiyiGeek# 精华文章发布地址(及时发布) 首页-https://weiyigeek.top...

全栈工程师修炼指南-IT知识分享 1348

使用 Jenkins Pipeline 部署 Kubernetes 应用

要实现在 Jenkins 中的构建工作,可以有多种方式,我们这里采用比较常用的 Pipeline 这种方式。Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原...

DevOps持续集成的博客 1862

【Linux运维大神系列】k8s基于Jenkins实现CICD

本文详细介绍了在Kubernetes集群中部署完整的CI/CD环境的全过程。主要内容包括: 基础设施部署 在Kubernetes集群中部署GitLab、SonarQube和Jenkins三大核心组件 配置持久化存储和Ingress访问 动态Slave环境搭建 配置Jenkins与Kubernetes集成 准备包含Maven、Docker、kubectl等工具的Pod模板镜像 实现按需创建Slave Pod执行任务 CI/CD流水线实现 从GitLab拉取代码 通过SonarQube进行代码质量检测 使用Ma

2403_87491401的博客 1111

k8s的持续发布

本章的主题是Jenkins自动化构建docker镜像,并部署到k8s集群,后面我们还会讲到Jenkins一键发布到k8s集群。安装jenkins需要使用tomcat去把应用跑起来1.清理所有的default资源和其他namespace下的资源[root@master ~]# kubectl get all --all-namespaces kubectl delete svc --all;kube...

changpei6330的博客 232

企业级JAVA环境配置实战:从单机到集群部署

对于需要展示成果或者做demo的场景,如果是一个有持续服务的配置管理界面(比如一个简单的Web管理端),这种项目在InsCode上还能直接一键部署成一个可访问的临时应用,分享给同事查看效果,整个过程非常省心,省去了自己折腾服务器和公网访问的麻烦。当需要回滚时,工具可以根据指定的版本号,从Git历史中取出当时的配置模板,并结合备份机制,快速恢复到之前的任一状态。,这是集群管理的基石。在推送新配置前,工具能对比目标服务器当前的配置与标准配置的差异,生成报告,让管理员确认后再执行,避免误操作。

JetRaven12的博客 24

直播 | Kubernetes DevOps平台实践

分享时间:9月3日 20:30分享主题:Kubernetes DevOps平台实践分享人介绍:马松林,现任DaoCloud交付架构师,负责Kubernetes、DCE、D...

Docker的专栏 229
上一篇: Docker构建Nginx+Tomcat镜像(实现动静分离)
下一篇: Jenkins+gitlab自动构建Job并推送钉钉消息提示
云巅的cat
博客等级 码龄7年 42粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值