You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitLab CI/CD中按指定分支变更目录构建对应dist文件夹

解决方案

你可以通过拆分独立构建任务 + 配置目录变更触发规则实现需求,GitLab CI 原生支持changes参数检测指定路径下的文件变更,从而决定是否执行对应任务。

最终配置示例

stages:
  - build

# Web1 专属构建任务,仅Web1目录变更时执行
build:web1:
  stage: build
  tags:
    - test
  only:
    refs:
      - test
    changes:
      # 匹配Web1目录下所有层级的任意文件
      - Web1/**/*
  script:
    - cd Web1
    - npm install
    - npm run build
    - rm -rf /home/user/test/web1
    # 请根据你实际的构建产物输出路径调整此处路径
    - cp -r dist /home/user/test/web1

# Web2 专属构建任务,仅Web2目录变更时执行
build:web2:
  stage: build
  tags:
    - test
  only:
    refs:
      - test
    changes:
      # 匹配Web2目录下所有层级的任意文件
      - Web2/**/*
  script:
    - cd Web2
    - npm install
    - npm run build
    - rm -rf /home/user/test/web2
    # 请根据你实际的构建产物输出路径调整此处路径
    - cp -r dist /home/user/test/web2

核心配置说明

  • 任务拆分:将原有的单个全局构建任务拆分为两个独立的子项目构建任务,互不干扰,同时修正了原有配置中rm - rf、cp - r的参数空格错误,避免执行报错
  • 变更触发规则:only.changes参数指定的路径通配符,会对比当前提交与上一次提交的文件差异,只有对应目录下有文件变更时,该任务才会被触发执行,无变更的任务会自动跳过
  • 兼容性说明:如果你使用的是 GitLab 12.3 及以上版本,更推荐使用rules语法替代only,规则配置灵活性更高,示例如下:
build:web1:
  stage: build
  tags:
    - test
  rules:
    - if: $CI_COMMIT_BRANCH == 'test'
      changes:
        - Web1/**/*
      when: always
  script:
    # 与上面的web1构建脚本一致

内容的提问来源于stack exchange,提问作者lizcodecode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:45:02