当前位置: 首页 > news >正文

持续集成 CI/CD-Jenkins持续集成GitLab项目打包docker镜像推送k8s集群并部署至rancher

Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务

之前是通过jar包在shell服务器上进行手动部署,麻烦且耗时。现通过Jenkins进行持续集成实现CI/CD。以test分支为例 提交即部署。
由于是根据自己实际使用过程 具体使用到了

  • gitlab
  • jenkins
  • docker
  • harbor
  • rancher
  • k8s

在这里插入图片描述

集成流程

  • 拉取git仓库并指定分支,并切换对应分支现test分支
  • 对代码依赖进行检查,并实现maven引入
  • 对项目进行打包
  • 执行Dockerfile
  • 提交Docker镜像到Harbor
  • 通知Rancher对项目进行更新
  • CI/CD 完成

集成实现

Jenkins项目配置
创建jenkins项目
请添加图片描述
新建项目
选择 New Item
在这里插入图片描述

填写配置信息
以-backend 标识它是这个项目的后端,选择Freestyle project选项
在这里插入图片描述
配置注释
填写 Description,项目的描述尽可能的详细,方便维护
点击 Advanced 配置Use custom workspace,该配置路径为服务器存放后端项目的路径
请添加图片描述
拉取git地址
配置GitLab项目地址。注意 该地址必须是 .git 结尾的
url为项目的git地址,及选择的git用户
在这里插入图片描述
配置拉取git分支
这里配置的是test分支
请添加图片描述
开启WebHook
勾选:Build when a change is pushed to GitLab …
复制自己项目的webhook URL: http://...:8080/project/flow-population-register-backend
会出现如下界面
点击 Advanced 进行详细配置
请添加图片描述
配置分支
点击上述的Advanced
点击Allowed branches下的Filter branches by regex进行选择监听的分支,正则匹配 .*test 分支并点击Generate生成Secret token的token,取消默认选择Allow all branches to trigger this job。
请添加图片描述

配置密钥
点击 Generate 生成 SecretToken请添加图片描述
配置脚本
选择 Build 选Add buile step中的Execute shell
在这里插入图片描述

点击 Execute Shell 来执行Shell脚本
注意:如果harbor中无项目,这里要去harbor中添加项目需要的存储位置

编写指令
填入你要执行的Shell指令
由于服务需要停止、再启动
可以先kill掉服务 再 java -jar 执行
目前流程是在后续操作中 将其打包为Docker 再根据流程推送至K8s集群中

mvn clean package
export IMAGE_NAME="harbor地址"
docker rmi $IMAGE_NAME || true
docker build -t $IMAGE_NAME .
docker push $IMAGE_NAME

在这里插入图片描述
如果持续集成到rancher上,需要再写一个shell脚本,并将rancher上api地址写入
保存项目
点击底部的 Save
先去测试配置是否生效请添加图片描述
GitLab项目配置
打开GitLab项目 -> 选择 Settings -> 选择 Integrations/Webhooks
请添加图片描述

配置Webhook
填写URL为刚才Jenkins的Webhook地址
填写SecretToken为Jenkins中按钮生成的秘钥
点击 Add webhook
点击save添加webhook
在这里插入图片描述
测试通知
点击 Test
选择 Push Events
点击 查看GitLab是否可以正常通过WebHook通知Jenkins
请添加图片描述
如果是如下的HTTP 200,这时GitLab现在已经可以正常通知Jenkins了请添加图片描述
此时向GitLab中的项目的test分支提交代码
将会发出WebHook来触发Jenkins
完成Shell中的命令
这样就完成了基础的CI/CD。

Rancher配置
登录Rancher
请添加图片描述
添加Deploy添加项目在这里插入图片描述

根据项目添加需要的配置信息请添加图片描述
其中:

  • Name可以自己随便写
  • WorkloadType Scalable是指可动态伸缩的 这里启动了2个服务
  • Docker Images 是镜像的地址
  • Port Mapping 需要暴露8080内部端口(publish the container port)到外部随机端口(on listening port)

启动服务
请添加图片描述
请添加图片描述

http://www.lryc.cn/news/571810.html

相关文章:

  • 京东618带火四大消费 即时零售和生活服务迎来爆发
  • 几种大功率远距传输WiFI解决方案
  • Spring Boot 常用注解整理
  • 支持selenium的chrome driver更新到137.0.7151.119
  • 面向智能制造场景的永磁同步电机预测控制系统设计
  • python大学校园旧物捐赠系统
  • 火山 RTC 引擎12----合流转推 集成
  • (LeetCode 每日一题) 2966. 划分数组并满足最大差限制 (贪心、排序)
  • [Python][Flask][Gunicorn] 搭建一个服务器-初步-小白式教程 - 1
  • 【系统分析师】第3章-基础知识:计算机系统(核心总结)
  • 如何在 MX Linux 上安装 Blender CAD 软件
  • 资源占用多,Linux 系统中如何降低 CPU 资源消耗并提升利用率?
  • 成组进位及其函数
  • 一篇文章快速学会HTML
  • 智能照明新篇章:电力载波技术的优势与未来展望​
  • 如何配置 SQL Server 混合身份验证模式​
  • [pyvips] 枚举类型 | 错误处理(c->py)
  • LoRA、QLoRA是什么
  • 分布式——分布式系统设计策略一
  • 【threejs】VR看房项目经验总结
  • java高级——注解和反射
  • MySQL 数据处理函数全面详解
  • 【windows常见文件后缀】
  • 客户端软件开发技术选择、填空解析
  • python中学物理实验模拟:杠杆平衡条件
  • 从0开始学linux韦东山教程第四章问题小结(5)
  • Java项目:基于SSM框架实现的学生二手书籍交易平台管理系统【ssm+B/S架构+源码+数据库+毕业论文+答辩PPT+任务书+开题】
  • 猿人学js逆向比赛第一届第六题
  • excel 待办日历软件(需要宏)特别推荐
  • 《挑战你的控制力!开源项目小游戏学习“保持平衡”开发解析:用HTML+JS+CSS实现物理平衡挑战》​