news 2026/6/10 1:48:02

淘客返利系统的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:43:53

你就再也不用担心断网导致白编译了!

这是针对你编译任务最实用的 screen 操作流程,分为四个阶段: 1. 开始之前:创建一个“房间” 登录 SSH 后,不要直接编译,先创建一个专门的 screen 会话(相当于开了一个独立的虚拟房间)。 代码语言:Bash AI代码解释 screen -S my_build-S my_build: 给这个会话起名叫…

作者头像 李华
网站建设 2026/6/9 21:21:18

全网独家!PAM-COMPOSITE复合材料仿真Python二次开发必备

全网独家!PAM-COMPOSITE 二次开发必备:7 合 1 论文级可视化工具(Python 代码直接抄) 做复合材料仿真的同学注意了!是不是还在为 PAM-COMPOSITE 仿真结果可视化发愁?自己从零编写代码要调试格式、调整配色、标注数值,动辄花费数小时,最后生成的图分辨率不足、格式不符合…

作者头像 李华
网站建设 2026/6/9 22:14:48

洗衣店如何线上接单?开源小程序源码系统,自带全流程管理功能

温馨提示&#xff1a;文末有资源获取方式对于拥有多家门店的洗衣连锁品牌而言&#xff0c;数字化管理不仅是趋势&#xff0c;更是降本增效的核心需求。传统的分散管理模式易导致数据孤岛与运营混乱。源码获取方式在源码闪购网。系统核心功能列表&#xff1a;多门店独立与统一管…

作者头像 李华
网站建设 2026/6/9 22:16:13

高性能活动报名表单系统源码,允许用户根据需求自由扩展

温馨提示&#xff1a;文末有资源获取方式 在数字化转型浪潮中&#xff0c;一款基于稳健技术栈的万能活动在线报名自定义表单系统源码脱颖而出&#xff0c;成为企业和组织的优选工具。该系统不仅功能强大&#xff0c;还以开源和可定制为核心优势&#xff0c;允许用户根据需求自由…

作者头像 李华
网站建设 2026/6/9 22:15:10

运维分析:企业如何开展设备故障、冗余有效性与路由路径深度分析

开展局域网设备故障分析、实施局域网冗余分析、执行局域网路由分析 摘要 面向企业IT部门、信息化负责人及运维团队&#xff0c;通过可视化运行监控系统支撑ICT系统规划、标准化交付与平台化运维&#xff0c;实现高确定性的局域网基础设施管理&#xff0c;精准定位设备故障、校…

作者头像 李华
网站建设 2026/6/9 22:17:19

交换系统评估:企业如何评估接入路由质量、需求匹配度与配置合规性

评估接入系统路由质量、匹配传输需求强度、审核路由系统配置 摘要 本文为企业IT部门、信息化负责人及运维团队提供可落地的交换系统评估方法论&#xff0c;通过标准化的评估体系&#xff0c;支撑系统规划、标准化交付与平台化运维&#xff0c;实现高确定性的交换基础设施管理…

作者头像 李华