GitLab Runner 17.1.0设GIT_CHECKOUT=true仍跳过检出求因
针对你遇到的GitLab Runner 17.1.0中GIT_CHECKOUT: true不生效、GIT_STRATEGY被设为none的问题,按优先级排查以下可能:
上游/父流水线变量传递
如果当前job属于子流水线,或由上游流水线触发,上游流水线可能通过变量传递强制设置了GIT_STRATEGY=none。GitLab中上游流水线传递的变量优先级高于.gitlab-ci.yml中的显式设置。可以在流水线变量页面查看所有生效变量的来源,确认是否有上游传递的该变量。Runner全局配置覆盖
检查Runner节点的config.toml文件,查看[[runners]]区块下的environment字段是否配置了GIT_STRATEGY=none。Runner级别的环境变量优先级最高,会直接覆盖项目和.gitlab-ci.yml中的设置。项目/组级隐藏变量
再次核对项目设置→CI/CD→变量以及所在组的CI/CD变量列表,注意查看是否有设置了「保护」或「掩码」的GIT_STRATEGY变量——这类变量默认可能不会在普通列表中完全展示,需要展开筛选条件确认。GitLab Runner 17.1.0版本bug
17.1.0作为17.x系列的初期版本,存在变量优先级处理的已知问题(比如GIT_CHECKOUT与GIT_STRATEGY的交互逻辑异常)。建议降级到17.0.x稳定版,或升级到17.1.x的最新补丁版本(如17.1.2及以上)验证是否解决。手动触发时的临时变量
如果是手动触发的流水线,检查触发时是否手动输入了GIT_STRATEGY=none的临时变量。手动触发的临时变量优先级高于所有配置类变量。Job依赖的间接影响
若当前job配置了dependencies或needs,且依赖的job明确设置了GIT_STRATEGY=none,部分场景下可能出现变量继承异常。可以尝试移除依赖配置后重新运行job验证。
内容的提问来源于stack exchange,提问作者bluesmoon

