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

GitLab CI流水线中如何按代码变更条件运行并行矩阵作业?

GitLab CI矩阵作业按对应目录变更触发的正确配置

你原来的并行矩阵作业配置如下:

sast-container:
  <<: *branches
  allow_failure: true
  parallel:
    matrix:
      - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/address-check-stub
      - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/manual-service-stub
      - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/employment-record-stub

需求是让每个矩阵作业仅在对应的代码目录(如stub-services/address-check-stub)发生变更时才运行。你之前的写法存在语法错误:matrix数组中只能定义变量键值对,不能直接嵌套only规则,且部分目录路径也写错了。

正确的配置方式是给每个矩阵项添加对应目录的自定义变量,然后通过rules结合changes实现触发控制:

sast-container:
  <<: *branches
  allow_failure: true
  parallel:
    matrix:
      - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/address-check-stub
        STUB_SERVICE_DIR: stub-services/address-check-stub
      - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/manual-service-stub
        STUB_SERVICE_DIR: stub-services/manual-service-stub
      - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/employment-record-stub
        STUB_SERVICE_DIR: stub-services/employment-record-stub
  rules:
    # 继承branches模板中的原有触发规则
    - !reference [*branches, rules]
    # 新增目录变更检查,仅对应目录有变更时触发
    - changes:
        - $STUB_SERVICE_DIR/**/*
      if: '$CI_PIPELINE_SOURCE == "push"'

配置说明:

  • 在每个矩阵项中新增STUB_SERVICE_DIR变量,明确对应各自的代码目录路径
  • 使用rules替代only(GitLab CI推荐用rules实现更灵活的流水线逻辑控制),通过变量引用对应目录,**/*表示检查该目录下所有文件及子目录的变更
  • 如果你的*branches模板用的是only/except而非rules,可以改用以下兼容写法:
sast-container:
  <<: *branches
  allow_failure: true
  parallel:
    matrix:
      - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/address-check-stub
        STUB_SERVICE_DIR: stub-services/address-check-stub
      - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/manual-service-stub
        STUB_SERVICE_DIR: stub-services/manual-service-stub
      - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/employment-record-stub
        STUB_SERVICE_DIR: stub-services/employment-record-stub
  only:
    changes:
      - $STUB_SERVICE_DIR/**/*
    refs: !reference [*branches, only, refs]

配置完成后,每个矩阵作业只会在对应的STUB_SERVICE_DIR目录下文件发生变更时才会被触发运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:21:31