news 2026/6/19 11:43:46

淘客返利系统的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/6/9 22:18:20

复合材料成型仿真案例大全|覆盖模压 / RTM / 固化 / SMC,实操步骤直接抄

封神🔥PAM-COMPOSITE 仿真案例大全|覆盖模压 / RTM / 固化 / SMC,实操步骤直接抄 做复合材料成型仿真的工程师、高校同仁,是不是都有同一个痛点?—— 想学 PAM-COMPOSITE 却缺真实案例,小白对着软件无从下手,老手遇到复杂工艺(如链式仿真、共固化变形)也得反复试错;…

作者头像 李华
网站建设 2026/6/17 16:03:01

【期货量化实战】期货量化交易策略实盘优化技巧(Python量化)

一、前言 实盘交易与回测存在很大差异&#xff0c;实盘优化是量化策略成功的关键。本文总结实盘交易中的常见问题和优化技巧&#xff0c;帮助策略在实盘中取得更好表现。 本文将介绍&#xff1a; 回测与实盘的差异滑点与手续费处理订单执行优化风险控制优化实盘监控与调试 …

作者头像 李华
网站建设 2026/6/17 10:48:01

‌用AI模拟第三方API超时:韧性指标(MTTF)优化指南

‌一、MTTF的核心价值与第三方API挑战‌ MTTF&#xff08;Mean Time To Failure&#xff09;衡量系统无故障运行的平均时间&#xff0c;是评估软件韧性的关键指标&#xff0c;直接影响用户体验和业务连续性。其倒数代表故障率&#xff0c;高MTTF意味着更可靠的系统。在微服务架…

作者头像 李华
网站建设 2026/6/17 5:05:55

Java 代码注释的艺术:构建高质量、可读性与架构级文档的终极指南

1.概述&#xff1a;代码即文学&#xff0c;注释即灵魂 在企业级 Java 后端开发的浩瀚工程中&#xff0c;代码质量往往不仅仅取决于算法的复杂度或架构的解耦程度&#xff0c;更取决于其可读性与可维护性。作为一名深耕 Java 技术栈多年的开发者&#xff0c;我们深知“代码是写…

作者头像 李华