三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

CI/CD和Jenkins流水线 (十九)

CI/CD和Jenkins流水线 (十九)

提交代码至 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)

  1. 192.168.1.101:GitLab + SonarQube(代码仓库 + 代码质检)
  2. 192.168.1.102:Jenkins + Nexus + Docker(构建、打包、制作镜像)
  3. 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 docker

101 服务器部署 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 -uroot
ALTER 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 deploy

deploy会自动把打好的 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 docker

101 节点部署 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 个文件:Dockerfileruoyi-deploy.yaml(文末附完整内容),提交到 git 仓库。
  • 进入项目【设置→集成】,配置 WebHook:
    • URL:http://192.168.1.102:8080/project/ruoyi-k8s
    • 触发事件:仅勾选Push事件,保存,实现提交代码自动触发 Jenkins。

部署 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 → 钉钉推送部署结果。

← 返回列表