Gitlab CI Monorepo子模块部署:多前端匹配不同UI组件分支
GitLab CI 实现多前端项目搭配不同UI组件分支构建部署
针对你的项目结构,我们可以通过在GitLab CI中定义独立的构建任务,分别为两个前端项目切换对应版本的UI组件子模块,完成构建部署。以下是具体实现方案:
核心配置示例(.gitlab-ci.yml)
stages: - build - deploy # 通用模板:子模块初始化与分支切换 .submodule_setup: before_script: # 初始化所有子模块 - git submodule init # 更新子模块到最新状态 - git submodule update --remote # 配置Git用户名邮箱(避免子模块切换分支时权限问题) - git config --global user.name "GitLab CI" - git config --global user.email "ci@gitlab.example.com" # frontend_1 构建部署任务 frontend1_deploy: stage: build extends: .submodule_setup script: # 切换ui-components到release/v1分支 - cd modules/ui-components - git checkout release/v1 - cd ../.. # 进入frontend_1目录安装依赖并构建 - cd apps/frontend_1 - npm install - npm run build # 这里添加实际部署命令,比如上传到服务器/云存储等 - echo "Deploy frontend_1 to production" only: - main tags: - nodejs # 根据你的CI runner标签调整 # frontend_2 构建部署任务 frontend2_deploy: stage: build extends: .submodule_setup script: # 切换ui-components到release/v2分支 - cd modules/ui-components - git checkout release/v2 - cd ../.. # 进入frontend_2目录安装依赖并构建 - cd apps/frontend_2 - npm install - npm run build # 这里添加实际部署命令,比如上传到服务器/云存储等 - echo "Deploy frontend_2 to production" only: - main tags: - nodejs # 根据你的CI runner标签调整
关键步骤说明
- 子模块处理:通过
git submodule init和git submodule update初始化拉取子模块代码,进入ui-components目录切换到指定分支,确保前端项目使用对应版本的UI组件。 - 任务隔离:为两个前端项目分别定义独立CI任务,各自处理对应的UI组件分支切换和构建流程,避免相互干扰。
- 触发条件:
only: - main确保只有主分支代码提交时才触发构建部署,可根据需求调整触发分支规则。 - 部署扩展:在
script末尾替换echo命令为实际部署逻辑,比如用scp上传构建产物到服务器、调用云平台部署API等。
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

