核心内容摘要
Qwen3-ASR-0.6B语音数据集清洗:MySQL存储优化方案
淘客返利系统的CI/CD流水线搭建Docker镜像构建与K8s部署实践大家好我是 微赚淘客系统
0 的研发者省赚客在微赚淘客系统
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.
jar rebate-system.jar # 暴露端口 EXPOSE 8080 # 启动应用 ENTRYPOINT [java, -jar, rebate-system.jar]Maven 打包配置确保生成可执行 JARbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationmainClassjuwatech.cn.rebate.RebateApplication/mainClass/configuration/plugin/plugins/build
GitLab CI 流水线定义.gitlab-ci.yml定义四阶段流水线build → test → build-image → deploystages:-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:
8-openjdk-17script:-mvn clean package-DskipTestsartifacts:paths:-target/*.jar# 单元测试test:stage:testimage:maven:
8-openjdk-17script:-mvn testcoverage:/Total.*?([
]{1,3})%/# 构建并推送镜像build-image:stage:build-imageimage:docker:
2
10services:-docker:
2
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||$DOCKER_IMAGE|g k8s/deployment.yaml|kubectl apply-f--kubectl rollout status deployment/rebate-deployment-n $K8S_NAMESPACE--timeout300senvironment:name:productiononly:-main
Kubernetes 部署清单k8s/deployment.yaml模板使用占位符供 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:ports:-containerPort:8080env:-name:SPRING_PROFILES_ACTIVEvalue:prod-name:DB_HOSTvalueFrom:secretKeyRef:name:rebate-db-secretkey:hostresources:requests:memory:512Micpu:200mlimits:memory:1Gicpu:500mlivenessProbe: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-literalhostdb.juwatech.cn\--from-literalusernamerebate_user\--from-literalpasswordS3cr3tPss!\-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 错误率确保部署质量。
本文著作权归 微赚淘客系统