news 2026/4/23 14:29:36

淘客返利系统的CI/CD流水线搭建:Docker镜像构建与K8s部署实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
淘客返利系统的CI/CD流水线搭建:Docker镜像构建与K8s部署实践

淘客返利系统的CI/CD流水线搭建:Docker镜像构建与K8s部署实践

大家好,我是 微赚淘客系统3.0 的研发者省赚客!

在微赚淘客系统3.0的演进过程中,为提升交付效率与系统稳定性,我们基于 GitLab CI + Harbor + Kubernetes 构建了完整的 CI/CD 流水线。从代码提交到生产环境部署,全程自动化,确保每次发布可追溯、可回滚、高可靠。

一、项目结构与Dockerfile设计

系统采用 Spring Boot 构建,主模块位于juwatech.cn.rebate包下。项目根目录包含标准Dockerfile

# 使用官方 OpenJDK 17 镜像 FROM openjdk:17-jdk-slim # 设置工作目录 WORKDIR /app # 复制 JAR 文件 COPY target/rebate-system-3.0.jar rebate-system.jar # 暴露端口 EXPOSE 8080 # 启动应用 ENTRYPOINT ["java", "-jar", "rebate-system.jar"]

Maven 打包配置确保生成可执行 JAR:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>juwatech.cn.rebate.RebateApplication</mainClass></configuration></plugin></plugins></build>

二、GitLab CI 流水线定义

.gitlab-ci.yml定义四阶段流水线:build → test → build-image → deploy

stages:-build-test-build-image-deployvariables:DOCKER_IMAGE:harbor.juwatech.cn/rebate/rebate-system:${CI_COMMIT_SHORT_SHA}K8S_NAMESPACE:rebate-prod# 构建阶段build:stage:buildimage:maven:3.8-openjdk-17script:-mvn clean package-DskipTestsartifacts:paths:-target/*.jar# 单元测试test:stage:testimage:maven:3.8-openjdk-17script:-mvn testcoverage:'/Total.*?([0-9]{1,3})%/'# 构建并推送镜像build-image:stage:build-imageimage:docker:20.10services:-docker:20.10-dindbefore_script:-echo "$HARBOR_PASSWORD"|docker login harbor.juwatech.cn-u "$HARBOR_USER"--password-stdinscript:-docker build-t $DOCKER_IMAGE .-docker push $DOCKER_IMAGEonly:-main# 生产部署deploy-prod:stage:deployimage:bitnami/kubectl:latestscript:-sed "s|{{IMAGE}}|$DOCKER_IMAGE|g" k8s/deployment.yaml|kubectl apply-f--kubectl rollout status deployment/rebate-deployment-n $K8S_NAMESPACE--timeout=300senvironment:name:productiononly:-main

三、Kubernetes 部署清单

k8s/deployment.yaml模板使用占位符{{IMAGE}}供 CI 替换:

apiVersion:apps/v1kind:Deploymentmetadata:name:rebate-deploymentnamespace:rebate-prodspec:replicas:3selector:matchLabels:app:rebate-systemtemplate:metadata:labels:app:rebate-systemspec:containers:-name:rebate-appimage:{{IMAGE}}ports:-containerPort:8080env:-name:SPRING_PROFILES_ACTIVEvalue:"prod"-name:DB_HOSTvalueFrom:secretKeyRef:name:rebate-db-secretkey:hostresources:requests:memory:"512Mi"cpu:"200m"limits:memory:"1Gi"cpu:"500m"livenessProbe:httpGet:path:/actuator/healthport:8080initialDelaySeconds:60periodSeconds:30readinessProbe:httpGet:path:/actuator/healthport:8080initialDelaySeconds:10periodSeconds:10---apiVersion:v1kind:Servicemetadata:name:rebate-servicenamespace:rebate-prodspec:selector:app:rebate-systemports:-protocol:TCPport:80targetPort:8080

数据库凭证通过 Secret 管理:

kubectl create secret generic rebate-db-secret\--from-literal=host=db.juwatech.cn\--from-literal=username=rebate_user\--from-literal=password='S3cr3tP@ss!'\-n rebate-prod

四、Java 应用启动类示例

主启动类位于指定包路径,确保与 Dockerfile 一致:

packagejuwatech.cn.rebate;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublicclassRebateApplication{publicstaticvoidmain(String[]args){SpringApplication.run(RebateApplication.class,args);}}

五、回滚与版本追踪

每次部署均基于 Git Commit ID 构建唯一镜像标签,支持快速回滚:

# 查看历史 ReplicaSetkubectl get rs -n rebate-prod# 回滚至上一版本kubectl rollout undo deployment/rebate-deployment -n rebate-prod

同时,Prometheus + Grafana 监控 Pod 状态、CPU、内存及 HTTP 错误率,确保部署质量。

本文著作权归 微赚淘客系统3.0 研发团队,转载请注明出处!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 2:36:38

从Bug猎人到产品决策者:测试员的权力重构

测试员角色的时代嬗变 在传统软件开发生命周期中&#xff0c;测试员常被定位为“Bug猎人”——专注于缺陷发现与报告&#xff0c;却游离于核心决策之外。然而&#xff0c;随着敏捷开发、DevOps及AI驱动的质量保障体系普及&#xff0c;测试员的角色正经历深刻重构。从被动执行者…

作者头像 李华
网站建设 2026/4/22 8:51:13

鹤岗启示录:资源枯竭城市的AI测试产业重生

资源诅咒下的破局契机 当煤炭资源濒临枯竭&#xff0c;鹤岗面临GDP下滑60%、人口外流超20万的城市困局。传统产业转型的迫切需求与AI测试产业低门槛、高赋能特性形成战略契合点。本文通过拆解鹤岗构建区域性AI测试枢纽的三年实践&#xff0c;为测试从业者提供资源受限场景下的…

作者头像 李华
网站建设 2026/4/19 3:50:35

数字孪生项目的开发流程

数字孪生&#xff08;Digital Twin&#xff09;项目是物理世界与数字世界的实时映射。在 2026 年&#xff0c;随着 AI 智能体与实时渲染技术的深度融合&#xff0c;数字孪生的开发已从单纯的“可视化看版”进化为具备“预测与决策”能力的机理模型系统。以下是数字孪生项目的标…

作者头像 李华
网站建设 2026/4/20 2:15:30

PAM-COMPOSITE 复合材料仿真数据导出操作手册(适配可视化工具专用)

PAM-COMPOSITE 数据导出操作手册(适配可视化工具专用) 一、导出准备工作(3 步前置配置) 启动 PAM-COMPOSITE 软件,加载已完成仿真的项目文件(.pcom 格式),确保仿真计算成功(无红色报错提示,状态栏显示 “Calculation completed”)。 确认仿真模型已定义材料属性(如…

作者头像 李华
网站建设 2026/4/18 9:55:14

运行标准:企业如何落地资源分配、传输策略与负载均衡运行规范

规范资源分配流程、执行传输策略规则、实现负载均衡调度 摘要 本文为企业IT部门、信息化负责人及运维团队提供标准化运行规范落地框架&#xff0c;通过可视化运行监控系统支撑资源分配、传输策略与负载均衡的全流程管理&#xff0c;实现高确定性的ICT基础设施管控&#xff0c…

作者头像 李华
网站建设 2026/4/23 14:02:27

计算机毕业设计springboot运动打卡系统 基于SpringBoot的健身习惯追踪平台 SpringBoot驱动的日常运动记录与督导系统

计算机毕业设计springboot运动打卡系统yxizz &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。当“久坐”成为办公族的常态&#xff0c;当“步数”悄悄取代体检表上的合格线&#…

作者头像 李华