持续集成 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集群中

powershell 复制代码
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)

启动服务

相关推荐
Zhou14113612 小时前
CICD_01_持续集成与Jenkins入门
运维·ci/cd·jenkins
大貔貅喝啤酒15 小时前
Gitea+Jenkins+Docker 搭建 Node 项目 CI/CD 自动部署完整教程
ci/cd·docker·jenkins·js·gitea
smartpi_ai1 天前
通用脱机烧录器为什么烧不进 CI-03?下载协议的门槛、免唤醒 10 条的建议值属性
服务器·网络·ci/cd
极小狐1 天前
CI 作业里 kubectl 连不上集群?用 Kubernetes Agent 打通部署链路的 7 个步骤
ci/cd·kubernetes·gitlab·devops·k8s部署
用户837133200762 天前
AI 写的发布流程 CI 全绿,为什么仍没通过需求验收?
ci/cd·github
天天喝旺仔2 天前
CI/CD 实战:GitHub Actions 自动化构建、测试与发布流水线
ci/cd·自动化·github·devops·持续集成
guo_wen_qiang2 天前
jenkins流水线参数化配置
运维·docker·容器·jenkins·持续部署
浪子明X2 天前
用 CMake Presets 固定跨平台构建:从本地开发到 CI 的依赖一致性实践
java·spring·ci/cd
Zhou1411362 天前
Git_02_GitLab协作与CI_CD
git·ci/cd·gitlab
白帽攻防录2 天前
SRC 挖洞:GitLab GraphQL 指令绕过深度复盘,CVE-2026-19478 未授权删项目怎么打穿代码托管平台
网络·网络安全·gitlab·graphql