在合并请求的项目设置中,我们选中了管道必须成功选项。所以任何不产生管道的合并请求都不能合并。
然而,root 上的大多数文件实际上并不需要管道,但由于上述条件,还需要为那里的更改定义一个作业。我们想要做的是,仅当根文件发生更改时才运行特定的空作业,如果文件夹和子文件夹也发生更改,则不运行它(因为这些更改已经触发了管道)。举个例子:
folder/subfolder/files
folder/file
file1
file2
如果只有文件 1 或/和文件 2 被更改运行作业。
如果文件 1 或/和文件 2 和文件夹发生更改,不要运行作业。
当前的定义是这样的,但它不起作用:
root_changes:
stage: pre_build
image: alpine:latest
tags: ...
variables:
GIT_STRATEGY: none
script: date
rules:
- if: '$CI_MERGE_REQUEST_ID'
changes:
- ./**/*
when: never
- if: '$CI_MERGE_REQUEST_ID'
changes:
- ./*
when: always