提交代码至 Git → Jenkins 触发构建 → CI 打包 → CD 远程发布 → 服务自动更新。
CI 持续集成
开发提交代码,自动拉取、编译、打包、测试,尽早暴露代码问题。本次:拉 Git 代码 + Maven 打包。
CD 持续部署
构建产物自动下发至服务器、重启服务完成上线。本次:推送 Jar、启停 SpringBoot。
两种构建模式
自由风格:配置写在 Jenkins 页面,新手练习用;
Pipeline:代码化 Jenkinsfile 存入 Git,企业正式环境使用。
常用插件
Git Plugin:拉取代码必备
Credentials Binding:管理密钥凭证
Maven Integration:Java 项目打包
Publish Over SSH:远程发布部署
Workspace Cleanup:自动清理工作目录
Email Extension:构建邮件通知
Pipeline:流水线核心插件
DingTalk Notification:钉钉告警
Build Timeout:防止构建卡死
SonarQube Scanner:代码质量检测
传统自由风格 CI/CD实现
三台主机(全是 Ubuntu24.04)
101(192.168.1.101):放代码 GitLab
102(192.168.1.102):Jenkins 构建工具,网页配置
103(192.168.1.103):运行 Java 项目
流程:
写完代码上传 101GitLab → 自动通知 102Jenkins 拉代码打包 → 把 jar 发到 103 → 关掉旧项目、启动新项目 → 发消息告诉你部署成功 / 失败
101、102、103 三台机器全都执行
apt update && apt upgrade -y apt install openssh-server git openjdk-8-jdk maven unzip zip -y systemctl enable --now ssh三台机器打通免密登录
任意一台主机执行
ssh-keygen # 一直回车 ssh-copy-id root@192.168.1.101 ssh-copy-id root@192.168.1.102 ssh-copy-id root@192.168.1.103在 103 安装 MySQL8(给 RuoYi 提供数据库)
apt install mysql-server -y systemctl enable --now mysql # 初始化mysql,设置root密码为123456 mysql_secure_installation登录 MySQL 创建若依数据库:
create database ry_vue default character set utf8mb4;101 部署 GitLab,上传 RuoYi-Vue 源码
安装 GitLab
apt install curl openssh-server ca-certificates postfix -y curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash apt install gitlab-ce -y sed -i 's#external_url .*#external_url "http://192.168.1.101"#' /etc/gitlab/gitlab.rb gitlab-ctl reconfigure上传若依代码
浏览器打开 http://192.168.1.101,设置 root 管理员密码,新建私有仓库 ruoyi-vue
本地拉取开源若依后端源码,修改配置文件 application.yml
spring: datasource: url: jdbc:mysql://192.168.1.103:3306/ry_vue?useUnicode=true&characterEncoding=utf8 username: root password: 123456将修改完毕的后端代码 push 上传到 101 的 GitLab 仓库。
102 部署 Jenkins(传统自由风格核心)
安装 Jenkins
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | tee /usr/share/keyrings/jenkins-keyring.asc echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | tee /etc/apt/sources.list.d/jenkins.list apt update apt install jenkins -y systemctl enable --now jenkins解锁初始化 Jenkins
cat /var/lib/jenkins/secrets/initialAdminPassword浏览器访问http://192.168.1.102:8080,粘贴密码解锁,安装推荐插件。
手动安装必须插件
进入【系统管理 - 插件管理 - 可选插件】,搜索安装这 5 个: Git Plugin、Maven Integration、Publish Over SSH、Workspace Cleanup、DingTalk Notification
Jenkins 全局工具配置
系统管理 → 全局工具配置 JDK:新增 JDK8,路径填写 /usr/lib/jvm/java-8-openjdk-amd64/ Maven:选用系统自带 Maven,直接保存。 系统管理 → 系统配置 → Publish over SSH 新增服务器配置: 名称:ry-server IP:192.168.1.103 账号:root 填写 103 的 root 密码,点击测试连接,出现 Success 代表连通成功,保存。GitLab 配置 WebHook(提交代码自动触发 Jenkins 构建)
进入 GitLab 的 ruoyi-vue 项目 → 设置 → 集成 URL 填写:http://192.168.1.102:8080/project/ruoyi-deploy 保存触发器,后续提交代码自动触发 Jenkins 打包。Jenkins 创建【自由风格项目】
新建任务 → 名称ruoyi-deploy→ 选择【自由风格项目】,确定。
选中 Git,填入 101 GitLab 仓库地址,添加 GitLab 账号密码凭证,拉取代码。 只勾选:Git hook 触发构建,定时构建、轮询 SCM 全部取消勾选。 新增构建步骤 → 调用顶层 Maven 目标,输入打包指令: clean package -Dmaven.test.skip=true -Pprod若依打包完成后,ruoyi-admin/target 目录生成 ruoyi-admin.jar。
新增步骤:Send build artifacts over SSH SSH 服务器:ry-server Source files:ruoyi-admin/target/*.jar Remote directory:/opt/ruoyi/ 远程在 103 执行部署脚本勾选 Exec command,完整脚本直接复制:# 创建目录 mkdir -p /opt/ruoyi cd /opt/ruoyi # 杀掉正在运行的旧若依进程 ps -ef | grep ruoyi-admin.jar | grep -v grep | awk '{print $2}' | xargs kill -9 sleep 1 # 后台启动若依后端 nohup java -jar ruoyi-admin.jar > ruoyi.log 2>&1 & sleep 5 # 健康检测 curl http://127.0.0.1:8080/系统配置绑定钉钉机器人 WebHook,构建成功推送部署成功消息,构建失败推送报错告警。
103 机器提前准备
# 创建若依存放目录 mkdir -p /opt/ruoyi # 放行8080端口 ufw allow 8080完整运行流程
本地修改 RuoYi 代码 push 提交到 101 GitLab GitLab WebHook 自动唤醒 102 Jenkins 任务 Jenkins 拉取若依源码 → Maven 打成生产环境 jar 包 通过 SSH 将 jar 分发至 103 的 /opt/ruoyi 103 执行脚本:杀掉旧若依进程 → 启动新版本 jar → 自检服务 Jenkins 清空缓存目录,钉钉发送部署结果通知你
容器化 CI/CD
开发提交代码 → GitLab(webhook 触发)→ Jenkins 拉取代码 Clone → SonarQube 代码质量检测 → Maven 打包 Jar → Nexus 上传制品 → Dockerfile 构建镜像 → Harbor 推送镜像 → 业务服务器删除旧容器 docker rm → 启动新容器 docker run → 构建钉钉 / 邮件通知
GitLab + webhook 存放 RuoYi 源码,代码 push 后自动调用 Jenkins,无需手动点构建。 Clone 代码(Jenkins Git) Jenkins 拉取完整若依后端代码到工作空间。 SonarQube 代码质量测试 扫描代码漏洞、不规范写法,质量不达标直接终止流程,禁止打包部署。 mvn 编译打包 执行clean package -Dmaven.test.skip=true -Pprod,生成ruoyi-admin.jar。 Nexus 上传制品库 存储 Jar 包,统一管理二进制程序包。 docker build(Dockerfile) 读取项目内 Dockerfile,把 Jar 打包成 Docker 镜像。 docker push Harbor 将镜像推送私有镜像仓库 Harbor,业务服务器统一拉取镜像。 docker rm 清理服务器上正在运行的旧版本若依容器。 docker run 基于 Harbor 最新镜像启动全新业务容器。 构建后通知 构建成功 / 失败推送钉钉消息,告知运维部署结果。实现
101:GitLab + SonarQube
102:Jenkins + Nexus + Docker(构建镜像)
103:业务服务器 + Harbor(镜像仓库)
主机规划(三台 Ubuntu24.04)
- 192.168.1.101:GitLab + SonarQube(代码仓库 + 代码质检)
- 192.168.1.102:Jenkins + Nexus + Docker(构建、打包、制作镜像)
- 192.168.1.103:Harbor 镜像仓库 + MySQL + 运行若依容器
三台机器全部执行
安装基础依赖
apt update && apt upgrade -y apt install openssh-server git openjdk-8-jdk maven unzip zip ca-certificates curl -y systemctl enable --now ssh三台机器互通免密 SSH
ssh-keygen # 全程回车,不要设置密钥密码 ssh-copy-id root@192.168.1.101 ssh-copy-id root@192.168.1.102 ssh-copy-id root@192.168.1.103三台统一安装 Docker
curl -fsSL https://get.docker.com | bash systemctl enable --now docker usermod -aG docker root usermod -aG docker jenkins # 102必须执行这句,让jenkins有权限操作docker newgrp docker101 服务器部署 GitLab + SonarQube
部署 GitLab
apt install postfix -y curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash apt install gitlab-ce -y # 修改访问地址 sed -i 's#external_url .*#external_url "http://192.168.1.101"#' /etc/gitlab/gitlab.rb gitlab-ctl reconfigure浏览器打开 http://192.168.1.101,设置 root 管理员密码。
新建私有仓库 ruoyi-vue,上传完整 RuoYi-Vue 后端源码。
在项目根目录新建 Dockerfile,内容如下:
FROM openjdk:8-jdk-alpine WORKDIR /app COPY ruoyi-admin/target/ruoyi-admin.jar app.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","app.jar","--spring.profiles.active=prod"]修改若依配置文件 ruoyi-admin/src/main/resources/application-prod.yml
spring: datasource: url: jdbc:mysql://192.168.1.103:3306/ry_vue?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: 123456提交代码到 GitLab 仓库。
部署 SonarQube(代码质量检测)
useradd sonar mkdir -p /usr/local/sonar chown sonar:sonar /usr/local/sonar su - sonar wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.8.0.63668.zip unzip sonarqube-9.8.0.63668.zip -d /usr/local/sonar/ cd /usr/local/sonar/sonarqube-9.8.0.63668/bin/linux-x86-64 ./sonar.sh start访问:http://192.168.1.101:9000,默认账号 admin/admin,登录后生成 sonar 令牌,留存备用。
102 服务器部署 Jenkins + Nexus3
安装 Jenkins
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | tee /usr/share/keyrings/jenkins-keyring.asc echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | tee /etc/apt/sources.list.d/jenkins.list apt update apt install jenkins -y systemctl enable --now jenkins初始化 Jenkins
查看初始密码:cat /var/lib/jenkins/secrets/initialAdminPassword
浏览器访问 http://192.168.1.102:8080,粘贴密码解锁。 先安装推荐插件,
再手动安装 5 个必备插件: Git Plugin、Maven Integration、Publish Over SSH、SonarQube Scanner、Workspace Cleanup、DingTalk Notification、Docker Plugin
Jenkins 全局配置
系统管理 → 全局工具配置 JDK:新增 JDK8,路径填写 /usr/lib/jvm/java-8-openjdk-amd64/ Maven:选用系统自带 Maven,保存 Docker:绑定本机 docker 路径 /usr/bin/docker 系统管理 → 系统 SonarQube servers:新增服务,地址填写 http://192.168.1.101:9000,粘贴之前生成的 sonar 令牌。 Publish Over SSH:新增服务器 名称:node103 Host:192.168.1.103 账号 root,填写 103 的 root 密码,点击测试连接,出现 Success 即为成功。102 部署 Nexus3(存放 jar 制品包)
mkdir -p /usr/local/nexus wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz tar -zxvf latest-unix.tar.gz -C /usr/local/nexus/ cd /usr/local/nexus/nexus-3.*-*/bin ./nexus start访问http://192.168.1.102:8081,登录查看初始密码,创建 maven 私有仓库。
103 服务器部署 Harbor + MySQL
安装 MySQL8,创建若依数据库
apt install mysql-server -y systemctl enable --now mysql mysql -urootALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; CREATE DATABASE ry_vue DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL ON ry_vue.* TO root@'%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES; exit放行端口:ufw allow 3306
部署 Harbor 私有镜像仓库
安装 docker-compose
apt install docker-compose -y- 下载 Harbor 离线包安装,配置域名
harbor.ry.com,开启 http 访问。 - 创建项目
ruoyi,记录 Harbor 地址:192.168.1.103、账号密码。 - 配置 Docker 信任私有仓库:
mkdir -p /etc/docker cat > /etc/docker/daemon.json <<EOF { "insecure-registries":["192.168.1.103"] } EOF systemctl restart docker配置 GitLab WebHook(代码提交自动触发 Jenkins)
进入 101 GitLab 的 ruoyi-vue 项目 → 设置 → 集成 URL 填入:http://192.168.1.102:8080/project/ruoyi-deploy 保存,实现代码 push 自动触发 Jenkins 构建。Jenkins 创建【自由风格项目】
新建任务 → 名称
ruoyi-deploy→ 选中【自由风格项目】→ 确定。选中 Git,填写 GitLab 仓库地址,添加 GitLab 账号密码凭证,拉取代码。
只勾选:Git hook 触发构建,定时构建、轮询 SCM 全部取消勾选。
新增构建步骤 → Execute SonarQube Scanner,直接保存配置,Sonar 检测代码存在漏洞、BUG 会直接终止整个部署流程。
新增构建步骤 → 调用顶层 Maven 目标,填入打包命令:
clean package -Dmaven.test.skip=true -Pprod deploydeploy会自动把打好的 ruoyi-admin.jar 上传到 102 的 Nexus 制品库
构建 Docker 镜像并推送 Harbor
新增构建步骤 → 执行 shell,粘贴脚本:
# 定义镜像名称 TAG=`date +%Y%m%d%H%M%S` IMAGE=192.168.1.103/ruoyi/ruoyi-admin:${TAG} # 登录harbor docker login 192.168.1.103 -u admin -p Harbor密码 # 构建镜像(读取项目内Dockerfile) docker build -t ${IMAGE} . # 推送镜像到harbor docker push ${IMAGE} # 把镜像名称写入临时文件,传给103服务器 echo ${IMAGE} > /tmp/image_name.txt构建后传到 103 并部署容器
新增步骤:Send build artifacts over SSH 服务器选择node103Source files:/tmp/image_name.txtRemote directory:/opt/deploy/勾选 Exec command,粘贴部署脚本:
cd /opt/deploy IMAGE=$(cat image_name.txt) # 删除旧容器 docker rm docker rm -f ruoyi-admin # 拉取新镜像、启动容器 docker run docker run -d --name ruoyi-admin --restart always -p 8080:8080 ${IMAGE} sleep 3 # 健康检测 curl http://127.0.0.1:8080/钉钉通知
系统配置绑定钉钉机器人 WebHook 地址,构建成功推送绿色「若依部署成功」,失败推送红色报错提醒。
Jenkins + K8s CI /CD
开发提交代码→GitLab (webhook 触发)→Jenkins 拉代码→Sonar 代码质检→Maven 打包→Docker 构建镜像→推送 Harbor 私有仓库→替换 yaml 镜像 TAG→kubectl apply 更新 K8s 应用→钉钉通知结果
环境(4 台主机,全 Ubuntu22.04)
192.168.1.101 GitLab + SonarQube 代码仓库、代码质量检测 192.168.1.102 Jenkins + Docker CI 构建、打包制作镜像 192.168.1.103 Harbor 私有镜像仓库存储镜像 192.168.1.104 K8s Master+MySQL 运行业务 Pod、数据库更新源、安装基础工具
apt update && apt install git openssh-server openjdk-8-jdk maven unzip curl -y systemctl enable --now ssh四台机器互相免密登录
ssh-keygen # 全程回车,不要设置密钥 ssh-copy-id root@192.168.1.101 ssh-copy-id root@192.168.1.102 ssh-copy-id root@192.168.1.103 ssh-copy-id root@192.168.1.104全部机器安装 Docker
curl -fsSL https://get.docker.com | sh systemctl enable --now docker usermod -aG docker root # 102节点额外执行,让jenkins用户拥有docker权限 usermod -aG docker jenkins newgrp docker所有节点配置信任 Harbor 私有仓库
mkdir -p /etc/docker cat > /etc/docker/daemon.json <<EOF { "insecure-registries":["192.168.1.103"] } EOF systemctl restart docker101 节点部署 GitLab + SonarQube
部署 GitLab
apt install postfix -y curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash apt install gitlab-ce -y # 修改访问地址 sed -i 's#external_url .*#external_url "http://192.168.1.101"#' /etc/gitlab/gitlab.rb gitlab-ctl reconfigure- 浏览器访问
http://192.168.1.101,初始化 root 管理员密码。 - 新建私有项目
ruoyi-vue,上传若依全套后端源码。 - 在项目根目录放入 2 个文件:
Dockerfile、ruoyi-deploy.yaml(文末附完整内容),提交到 git 仓库。 - 进入项目【设置→集成】,配置 WebHook:
- URL:
http://192.168.1.102:8080/project/ruoyi-k8s - 触发事件:仅勾选
Push事件,保存,实现提交代码自动触发 Jenkins。
- URL:
部署 SonarQube 代码检测‘
useradd sonar mkdir -p /opt/sonarqube chown sonar:sonar /opt/sonarqube su - sonar wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.8.0.63668.zip unzip sonarqube-9.8.0.63668.zip -d /opt/sonarqube/ cd /opt/sonarqube/sonarqube-9.8.0.63668/bin/linux-x86-64 ./sonar.sh start访问 http://192.168.1.101:9000,默认账号admin/admin。 新建令牌:右上角头像→我的账号→安全→生成令牌,复制令牌字符串留存,后续 Jenkins 配置使用。’
102 节点部署 Jenkins
安装 Jenkins
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | tee /usr/share/keyrings/jenkins-keyring.asc echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | tee /etc/apt/sources.list.d/jenkins.list apt update apt install jenkins -y systemctl enable --now jenkins初始化 Jenkins
查看初始解锁密码:cat /var/lib/jenkins/secrets/initialAdminPassword 浏览器打开 http://192.168.1.102:8080,粘贴密码解锁。 必备插件: Git Plugin、Maven Integration、SonarQube Scanner、Docker Plugin、Publish Over SSH、Workspace Cleanup、DingTalk Notification
Jenkins 全局配置
全局工具配置(系统管理→全局工具配置) JDK:新增 JDK8,路径填写 /usr/lib/jvm/java-8-openjdk-amd64/ Maven:选用本机已安装 Maven,保存 Docker:Docker 路径填写 /usr/bin/docker ② 系统配置(系统管理→系统) SonarQube servers:新增 Sonar 服务 名称:sonar-server Server URL:http://192.168.1.101:9000 Server authentication token:粘贴 Sonar 生成的令牌,保存。 Publish Over SSH:新增 K8s 节点配置 Name:k8s-master Hostname:192.168.1.104 Username:root 填写 104 机器 root 密码,点击【Test Configuration】显示 Success 即为连通成功。 钉钉配置:填入钉钉机器人 Webhook 地址,用于构建完成推送消息。103 节点部署 Harbor 镜像仓库
apt install docker-compose -y # 下载Harbor离线安装包,解压安装 wget https://github.com/goharbor/harbor/releases/download/v2.8.0/harbor-offline-installer-v2.8.0.tgz tar zxvf harbor-offline-installer-v2.8.0.tgz && cd harbor cp harbor.yml.tmpl harbor.yml # 修改harbor.yml,关闭https,配置hostname: 192.168.1.103 sed -i 's/https:/#https:/' harbor.yml sed -i 's/port: 443/#port: 443/' harbor.yml sed -i 's/hostname: reg.mydomain.com/hostname: 192.168.1.103/' harbor.yml ./install.sh访问 http://192.168.1.103,默认账号admin/Harbor12345。 新建公开项目 ruoyi。
104 节点搭建 K8s 单 Master 集群 + MySQL
搭建 k8s 集群(kubeadm 方式)
部署单 master 集群,安装完成后执行以下命令,让 Jenkins 可以远程执行 kubectl
# 把k8s认证文件拷贝到root目录 mkdir -p /root/.kube cp /etc/kubernetes/admin.conf /root/.kube/config chmod 644 /root/.kube/config # 测试kubectl是否正常 kubectl get nodes部署 MySQL8
apt install mysql-server -y systemctl enable --now mysql mysql -uroot执行 SQL 初始化数据库:
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; CREATE DATABASE ry_vue DEFAULT CHARACTER SET utf8mb4; GRANT ALL ON ry_vue.* TO root@'%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES; exit;Jenkins 创建【自由风格项目】核心配置
新建任务 → 名称ruoyi-k8s→ 选择自由风格软件项目→ 确定。
源码管理 选择 Git,填入 GitLab 仓库地址,添加 GitLab 账号密码凭证,拉取代码。 ② 构建触发器 只勾选 触发远程构建(例如使用脚本),其余定时构建、轮询 SCM 全部取消勾选。 ③ 构建步骤 1:Sonar 代码质量扫描 新增构建步骤 → Execute SonarQube Scanner,无需填写参数,直接保存。 作用:代码存在 BUG、漏洞、不规范写法,Jenkins 直接终止构建,不会发布上线。 ④ 构建步骤 2:Maven 打包 新增构建步骤 → 调用顶层 Maven 目标,输入打包命令: clean package -Dmaven.test.skip=true -Pprod执行 Shell(构建镜像→推送 Harbor→替换 yaml 镜像 TAG)新增构建步骤 → 执行 shell,完整脚本直接粘贴:
# 用时间戳作为镜像唯一TAG TAG=$(date +%Y%m%d%H%M%S) HARBOR_ADDR="192.168.1.103/ruoyi" IMAGE_FULL="${HARBOR_ADDR}/ruoyi-admin:${TAG}" # 登录Harbor镜像仓库 docker login ${HARBOR_ADDR} -u admin -p Harbor12345 # 根据项目内Dockerfile构建镜像 docker build -t ${IMAGE_FULL} . # 推送镜像到Harbor仓库 docker push ${IMAGE_FULL} # 修改k8s部署yaml里的镜像版本,替换为新TAG sed -i "s|image:.*ruoyi-admin:.*|image: ${IMAGE_FULL}|g" ruoyi-deploy.yaml构建后操作 1:远程下发 yaml 到 k8s 节点并更新应用
新增构建后操作 →
Send build artifacts over SSH
- SSH Server:选择之前配置好的
k8s-master- Source files:
ruoyi-deploy.yaml- Remote directory:
/opt/k8s-deploy/- 勾选【Exec command】,填入执行命令:
cd /opt/k8s-deploy # 执行更新,k8s自动滚动更新pod kubectl apply -f ruoyi-deploy.yaml # 查看更新状态 kubectl rollout status deployment ruoyi-admin选择钉钉通知插件,配置:
- 构建成功:发送绿色消息「若依服务部署成功,新版本 TAG:${TAG}」
- 构建失败:发送红色消息「部署失败,请查看 Jenkins 日志排查」
配套放入 Git 仓库的 2 个核心文件
Dockerfile(项目根目录)
FROM openjdk:8-jdk-alpine WORKDIR /app # 复制打包后的jar包 COPY ruoyi-admin/target/ruoyi-admin.jar app.jar EXPOSE 8080 # 启动命令,使用生产配置 ENTRYPOINT ["java","-jar","app.jar","--spring.profiles.active=prod"]ruoyi-deploy.yaml(K8s 部署清单)
apiVersion: apps/v1 kind: Deployment metadata: name: ruoyi-admin namespace: default spec: replicas: 2 selector: matchLabels: app: ruoyi-admin template: metadata: labels: app: ruoyi-admin spec: containers: - name: ruoyi image: 192.168.1.103/ruoyi/ruoyi-admin:inittag ports: - containerPort: 8080 resources: limits: cpu: 1000m memory: 1Gi requests: cpu: 500m memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: ruoyi-svc spec: type: NodePort ports: - port: 8080 targetPort: 8080 nodePort: 30080 selector: app: ruoyi-admin总结
开发提交代码 → GitLab 触发 WebHook → Jenkins 拉取代码 → Sonar 质检拦截坏代码 → Maven 打包 Jar → Docker 构建镜像 → 推送镜像到 Harbor 仓库 → sed 更新 yaml 镜像 TAG → SSH 传到 k8s 机器执行
kubectl apply -f滚动更新 Pod → 钉钉推送部署结果。