Gitlab 如何防止作业基于与master相比更改的文件运行?
我的pipleline中有一些gitlab作业速度很慢,我希望在更改不会影响作业结果时阻止它们运行 这就是我尝试过的:Gitlab 如何防止作业基于与master相比更改的文件运行?,gitlab,gitlab-ci,Gitlab,Gitlab Ci,我的pipleline中有一些gitlab作业速度很慢,我希望在更改不会影响作业结果时阻止它们运行 这就是我尝试过的: 运行\u测试: 阶段:检查 脚本: -货物试验 除: -主人 -标签 仅: 变化: -“***.rs” -“***/Cargo.toml” -“***/Cargo.lock” 这类工作。如果合并请求有多个提交,则此作业不会在第一个提交之后的任何提交上运行,除非源文件已更改 但是,即使此分支和主分支之间的源文件没有更改,作业仍将始终在分支的第一次提交时运行。更糟糕的是,如果测试
运行\u测试:
阶段:检查
脚本:
-货物试验
除:
-主人
-标签
仅:
变化:
-“***.rs”
-“***/Cargo.toml”
-“***/Cargo.lock”
这类工作。如果合并请求有多个提交,则此作业不会在第一个提交之后的任何提交上运行,除非源文件已更改
但是,即使此分支和主分支之间的源文件没有更改,作业仍将始终在分支的第一次提交时运行。更糟糕的是,如果测试在第一次提交时失败,后续提交可能会跳过测试,以便合并损坏的代码
如何更改此筛选器,以便针对合并请求的目标分支执行差异?隐藏在foronly:changes
中,有以下代码片段:
如果没有用于合并请求的管道,管道将在与合并请求没有显式关联的分支或标记上运行。在里面
在这种情况下,使用以前的SHA计算差异,这
相当于git diff HEAD~。这可能会导致一些意外的结果
行为,包括:
- 将新分支或新标记推送到GitLab时,策略的计算结果始终为true
- 推送新提交时,将使用上一次提交作为基础SHA来计算更改的文件
要使其正常工作,我相信您需要仅添加
合并请求
,但这需要更改整个管道工作流,以便将仅:合并请求
集成到管道中
从:
使用合并请求的管道,可以定义要执行的作业
基于合并请求中修改的文件创建
为了推导源分支的正确基SHA,我们
建议仅将此关键字与:[合并请求]组合。这
这样,文件差异就可以从任何进一步的数据中正确计算出来
提交,因此合并请求中的所有更改都在
管道
GitLab的各种问题: