Gitlab 如何防止作业基于与master相比更改的文件运行?

Gitlab 如何防止作业基于与master相比更改的文件运行?,gitlab,gitlab-ci,Gitlab,Gitlab Ci,我的pipleline中有一些gitlab作业速度很慢,我希望在更改不会影响作业结果时阻止它们运行 这就是我尝试过的: 运行\u测试: 阶段:检查 脚本: -货物试验 除: -主人 -标签 仅: 变化: -“***.rs” -“***/Cargo.toml” -“***/Cargo.lock” 这类工作。如果合并请求有多个提交,则此作业不会在第一个提交之后的任何提交上运行,除非源文件已更改 但是,即使此分支和主分支之间的源文件没有更改,作业仍将始终在分支的第一次提交时运行。更糟糕的是,如果测试

我的pipleline中有一些gitlab作业速度很慢,我希望在更改不会影响作业结果时阻止它们运行

这就是我尝试过的:

运行\u测试:
阶段:检查
脚本:
-货物试验
除:
-主人
-标签
仅:
变化:
-“***.rs”
-“***/Cargo.toml”
-“***/Cargo.lock”
这类工作。如果合并请求有多个提交,则此作业不会在第一个提交之后的任何提交上运行,除非源文件已更改

但是,即使此分支和主分支之间的源文件没有更改,作业仍将始终在分支的第一次提交时运行。更糟糕的是,如果测试在第一次提交时失败,后续提交可能会跳过测试,以便合并损坏的代码

如何更改此筛选器,以便针对合并请求的目标分支执行差异?

隐藏在for
only:changes
中,有以下代码片段:

如果没有用于合并请求的管道,管道将在与合并请求没有显式关联的分支或标记上运行。在里面 在这种情况下,使用以前的SHA计算差异,这 相当于git diff HEAD~。这可能会导致一些意外的结果 行为,包括:

  • 将新分支或新标记推送到GitLab时,策略的计算结果始终为true
  • 推送新提交时,将使用上一次提交作为基础SHA来计算更改的文件
这是您当前遇到的情况,作业总是在新分支的第一次提交时运行


要使其正常工作,我相信您需要仅添加
合并请求
,但这需要更改整个管道工作流,以便将
仅:合并请求
集成到管道中

从:

使用合并请求的管道,可以定义要执行的作业 基于合并请求中修改的文件创建

为了推导源分支的正确基SHA,我们 建议仅将此关键字与:[合并请求]组合。这 这样,文件差异就可以从任何进一步的数据中正确计算出来 提交,因此合并请求中的所有更改都在 管道


GitLab的各种问题: