GitLab CI手动触发流水线无视规则执行作业问题咨询
问题解答
1. 手动触发流水线时作业执行是默认行为吗?
是的,这是GitLab CI的默认行为。当手动触发流水线时,rules:changes规则会被忽略,GitLab会默认运行所有未明确排除手动触发场景的作业。
2. 需要添加额外规则吗?
需要。要实现「仅FILEBASE目录文件变更时自动执行,手动触发时不执行」的需求,需在rules中添加if条件,明确限制只有非手动触发的流水线才检查文件变更。
修改后的作业配置如下:
stage: build script: - echo "Building web" rules: - if: '$CI_PIPELINE_SOURCE != "web"' changes: [ FILEBASE/**/* ]
规则说明:
$CI_PIPELINE_SOURCE != "web":CI_PIPELINE_SOURCE是GitLab内置变量,通过网页手动触发流水线时,该变量值为web。添加此条件后,手动触发的流水线会跳过该作业。- 结合
changes规则,只有当流水线为自动触发(如代码push、合并请求)且FILEBASE目录下文件有变更时,才会执行该作业。
内容的提问来源于stack exchange,提问作者Sam Martin
相关产品推荐
相关产品推荐

