news 2026/4/30 18:56:53

淘客返利系统的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/30 1:35:48

淘宝返利软件的可观测性架构:Prometheus与Grafana监控体系搭建

淘宝返利软件的可观测性架构&#xff1a;Prometheus与Grafana监控体系搭建 大家好&#xff0c;我是 微赚淘客系统3.0 的研发者省赚客&#xff01; 在高并发、分布式环境下&#xff0c;淘客系统的稳定性依赖于完善的可观测性能力。微赚淘客系统3.0 基于 Prometheus Grafana …

作者头像 李华
网站建设 2026/4/23 9:50:36

分布式淘客系统的配置中心设计:Nacos在多环境配置管理的应用

分布式淘客系统的配置中心设计&#xff1a;Nacos在多环境配置管理的应用 大家好&#xff0c;我是 微赚淘客系统3.0 的研发者省赚客&#xff01; 随着微赚淘客系统3.0业务模块拆分为用户服务、佣金服务、商品同步服务等多个微服务&#xff0c;传统配置文件方式已无法满足动态调…

作者头像 李华
网站建设 2026/4/21 14:40:56

为什么三线城市测试员更易获风投?地域红利揭秘

一、引言&#xff1a;地域红利与软件测试行业的新机遇 在数字化转型浪潮中&#xff0c;软件测试行业正经历结构性变革&#xff0c;三线城市测试员凭借地域红利成为风投青睐的对象。地域红利指二三线城市在生活成本、政策支持和人才生态上的系统性优势&#xff0c;为测试从业者…

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

硅谷新风口:AI开始雇佣人类,数字打工人热度破55万!

在人工智能技术快速迭代的今天&#xff0c;硅谷迎来了一场前所未有的“反转”。一项名为“RentAHuman.ai”的新兴平台近日在互联网引发轰动&#xff0c;标志着“AI雇佣人类”这一概念不再是科幻小说的情节&#xff0c;而是正在进行的现实实验。根据36氪报道&#xff0c;这一现象…

作者头像 李华
网站建设 2026/4/23 4:33:29

路由优化:企业应如何实现VLAN、传输网与交换系统端到端协同优化

优化局域网VLAN结构、调优传输网路由路径、完善交换系统路由策略 摘要 为企业IT部门、信息化负责人及运维团队提供价值&#xff1a;通过可视化运行监控系统&#xff0c;支撑系统规划、标准化交付与平台化运维&#xff0c;实现高确定性的ICT基础设施管理&#xff0c;降低故障率…

作者头像 李华
网站建设 2026/4/24 23:56:51

【期货量化进阶】期货量化交易策略动态仓位管理(Python量化)

一、前言 固定仓位管理难以适应市场变化&#xff0c;动态仓位管理可以根据市场状态、信号强度、账户风险等因素动态调整仓位&#xff0c;提高策略的风险收益比。本文将介绍如何实现动态仓位管理。 本文将介绍&#xff1a; 动态仓位管理原理基于波动率的仓位调整基于信号强度…

作者头像 李华