有没有办法根据 GitlabCI 中的不同文件更改在合并请求上触发不同的提交构建?

问题描述

我们正在从 tfs 迁移到 gitlab。我们是一个拥有多种技术堆栈的巨大存储库。每个解决方案都有自己的相关单元测试。我们计划仅在成功构建具有与合并请求相关联的更改的特定解决方案后才允许合并请求成功完成。由于我们有多种解决方案,如果合并请求与特定文件更改相关联,是否有办法告诉 Gitlab ci yaml 仅触发特定作业。

例如... 如果我在合并请求中对解决方案 A 进行了更改,则管道应触发作业 A

目前,我们有与此类似的 yaml 片段。但是它会在所有合并请求上触发,而我们希望它仅针对 /docs/UI 下的文件的合并请求触发

  rules:
    - if: $CI_MERGE_REQUEST_IID
    - changes:
      - ./docs/UI

我们的 Gitlab 版本:GitLab Enterprise Edition 12.6.6-ee

任何线索将不胜感激。谢谢!!

解决方法

您正在使用关键字 rules。规则按顺序评估,直到第一次匹配。匹配后,作业会被包含在管道中或从管道中排除,具体取决于配置。

Use the keyword only instead。例如像这样:

  only:
    refs:
      - merge_requests
    changes:
      - docs/UI/**/*

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...