news 2026/4/16 16:30:00

淘客返利系统的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/16 12:08:27

从码农到乡村AI教育家:我的鹤岗实验

代码之外&#xff0c;屏幕之后 在软件测试的领域里&#xff0c;我们习惯于与代码、缺陷、用例、自动化脚本为伍。我们的世界由精确的逻辑、可复现的步骤和追求“零缺陷”的理想构成。我们深知技术的强大&#xff0c;也洞悉其脆弱性。然而&#xff0c;当2025年底&#xff0c;我…

作者头像 李华
网站建设 2026/4/16 11:58:25

nodejs考研备考学习互助打卡系统

文章目录系统概述核心功能技术实现应用场景--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 Node.js考研备考学习互助打卡系统是一个基于Node.js开发的在线平台&#xff0c;旨在帮助考研学生制定学习计划、…

作者头像 李华
网站建设 2026/4/16 15:07:47

开源活动表单系统源码 带完整的搭建部署教程

温馨提示&#xff1a;文末有资源获取方式当业务增长对个性化管理工具的需求日益迫切时&#xff0c;拥有一套可自主掌控的数字化系统变得至关重要。一款功能完备的万能活动在线报名自定义表单系统源码&#xff0c;为此提供了绝佳的起点。它不仅仅是一个“即用型”工具&#xff0…

作者头像 李华
网站建设 2026/4/16 12:03:50

【期货量化进阶】期货量化交易策略交易时机选择(Python量化)

一、前言 交易时机的选择直接影响策略表现。选择合适的交易时机可以降低交易成本、提高成交质量、减少滑点损失。本文将介绍如何识别和选择最佳交易时机。 本文将介绍&#xff1a; 交易时机的重要性市场微观结构分析流动性评估波动率时机选择时间窗口优化 二、为什么选择天…

作者头像 李华
网站建设 2026/4/15 12:55:37

合思AI:聚合全域优势,重塑企业费控数智新生态

在数字经济深度渗透的今天&#xff0c;企业费控管理正从“流程合规”向“效率提升成本优化业财融合”三重升级&#xff0c;AI技术成为破解财务痛点、激活管理效能的核心引擎。立足行业实践&#xff0c;合思AI整合头部大模型产品的核心优势&#xff0c;以“全场景覆盖、全流程智…

作者头像 李华