如何在Gitlab中保留rules配置的同时禁用detached分离流水线
解决方法
有两种方案可以在保留原有changes规则逻辑的前提下禁用detached流水线,推荐优先用全局workflow配置的方案,侵入性更低。
方案一:全局配置workflow规则(推荐)
在.gitlab-ci.yml文件最顶部添加如下workflow配置,直接从全局层面限定只有合法来源的流水线才会运行,从根源上避免detached流水线生成,完全不会影响你现有job的规则逻辑:
workflow: rules: # 允许合并请求流水线 - if: $CI_PIPELINE_SOURCE == "merge_request_event" # 允许默认分支推送流水线 - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # 允许Tag推送流水线 - if: $CI_COMMIT_TAG # 允许定时任务流水线 - if: $CI_PIPELINE_SOURCE == "schedule" # 允许页面手动触发流水线 - if: $CI_PIPELINE_SOURCE == "web"
你可以根据自己的实际使用场景增删上面的触发条件,只要不额外加其他源的规则,detached流水线就不会再被触发。
方案二:修改现有Job的规则
如果你只需要针对这一个Job处理,不想改全局配置,可以给原有规则增加触发源限定,如下:
rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" changes: - foo/**/* - foo_scenarios/**/* - .gitlab-ci.yml - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH changes: - foo/**/* - foo_scenarios/**/* - .gitlab-ci.yml # 其他你需要的触发场景可以按上面的格式追加
这个方案只会影响当前Job的触发逻辑,原有changes的文件匹配规则完全保留。
内容的提问来源于stack exchange,提问作者George Shuklin
相关产品推荐
相关产品推荐

