当前位置: 首页 > news >正文

一个工程多Module的微服务项目,如何在GitLab中配置CI/CD

常规操作

首先你需要配置好GitLab的CI/CD,该步骤参考网上教程

gitlab-ci 配置

一个工程多Module的微服务项目一般是这样的结构:
├── service-a/ # 服务A
│ └── service-a-api
│ └── service-a-service
│ └── target/
│ └── service-a.jar
│ └── pom.xml
├── service-b/ # 服务B
│ └── service-b-api
│ └── service-b-service
│ └── target/
│ └── service-b.jar
│ └── pom.xml
├── service-c/ # 服务C
│ └── service-c-api
│ └── service-c-service
│ └── target/
│ └── service-c.jar
│ └── pom.xml
└── .gitlab-ci.yml
└── pom.xml

我们打包一般是在根目录下执行mvn clean package,这样把所有的服务包都打好了
service-x.jar 是我们要部署的jar包

要使用gitlab的CI/CD来自动部署我们修改过的服务,不是每次全部部署

使用git 来查询有变化的文件,然后跟所有要部署的服务中进行匹配,存在的话就表示该服务需要进行部署,提取出要部署的服务名(我这里的情况是每个服务的最后一个单词来做为服务别名)。

下面是我这里检测变化服务的CI/CD配置,供参考

variables:ALL_SERVICES: "gateway admin"detect_changed_services:stage: detect_changescript:# 关键修复1:用|包裹if语句块,确保正确换行,查询有变化的文件- |if [ -n "$(git rev-parse HEAD^ 2>/dev/null)" ]; thenCHANGED_FILES=$(git diff --name-only HEAD^ HEAD)elseCHANGED_FILES=$(git ls-files)fi- echo "变更文件列表:"- echo "$CHANGED_FILES"# 初始化变更服务列表- CHANGED_SERVICES=""# 跟配置的服务进行匹配,匹配成功表示,该服务需要部署- |for SERVICE in $ALL_SERVICES; doif echo "$CHANGED_FILES" | grep -q "$SERVICE"; thenCHANGED_SERVICES="$CHANGED_SERVICES $SERVICE"echo "检测到变更:$SERVICE"fidone# 格式化服务列表- |CHANGED_SERVICES=$(echo "$CHANGED_SERVICES" | xargs | tr ' ' '\n' | sort -u | tr '\n' ' ')echo "最终需要处理的服务:$CHANGED_SERVICES"echo "CHANGED_SERVICES=$CHANGED_SERVICES" >> variables.envartifacts:reports:dotenv: variables.envtags:- mavenonly:- dev# 后面的阶段省略,提取出要部署的服务后就好办了
http://www.dtcms.com/a/354427.html

相关文章:

  • MySQL数据库精研之旅第十三期:吃透用户与权限管理,筑牢数据库安全第一道防线
  • 深入解析Java并发编程与单例模式
  • 详解Log4j组件:工业级Java日志框架
  • Redis实战-点赞的解决方案
  • vue布局
  • LightGBM 在金融逾期天数预测任务中的经验总结
  • 2025年渗透测试面试题总结-36(题目+回答)
  • 2025年渗透测试面试题总结-37(题目+回答)
  • vue3 数据库 内的 字符 显示 换行符
  • LeetCode-238除自身以外数组的乘积
  • 基于单片机步进电机控制电机正反转加减速系统Proteus仿真(含全部资料)
  • codeforces(1045)(div2) E. Power Boxes
  • 2024年09月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • Kubernetes 的20 个核心命令分类详解
  • 深度学习11 Deep Reinforcement Learning
  • 基于视觉的网页浏览Langraph Agent
  • 【RAG知识库实践】向量数据库VectorDB
  • Linux应用软件编程---网络编程(TCP并发服务器构建:[ 多进程、多线程、select ])
  • Spring Start Here 读书笔记:第15 章 Testing your Spring app
  • 【PyTorch】基于YOLO的多目标检测项目(二)
  • vue2 watch 的使用
  • Xshell 自动化脚本大赛技术文章大纲
  • TypeScript:重载函数
  • 《Linux 网络编程四:TCP 并发服务器:构建模式、原理及关键技术(select )》
  • oceanbase-部署
  • yolo ultralytics之yolov8.yaml文件简介
  • 《信息检索与论文写作》实验报告三 中文期刊文献检索
  • Linux 云服务器内存不足如何优化
  • LinuxC系统多线程程序设计
  • C语言:数据在内存中的存储