GitLab手动流水线设SKIP_SCANS为false仍不加载扫描阶段问题
问题解决方法
问题根源
你的配置中,include规则里的if: ${SKIP_SCANS} !~ /true/i会被YAML解析器提前插值——因为配置文件里默认SKIP_SCANS是"true",YAML会直接把${SKIP_SCANS}替换成true,最终规则条件变成true !~ /true/i(结果为false)。即使手动触发流水线时修改了SKIP_SCANS的值,此时YAML已经完成解析,规则条件不会再更新,导致扫描阶段始终不被包含。
修复方案
方案1:阻止YAML提前插值(核心修复)
把if条件用单引号包裹,让GitLab CI的规则引擎在流水线初始化时动态读取变量值(包括手动触发时设置的变量):
variables: ## Debug and other convenience variables SKIP_SCANS: "true" include: - project: "blah/gitlab-ci-templates" file: "/templates/sonarqube.gitlab-ci.yml" ref: "blahblah/1.0.8" rules: - if: '$SKIP_SCANS !~ /true/i'
方案2:改用精确字符串判断(更直观可靠)
如果不需要模糊匹配,直接用字符串相等判断替代正则,避免正则匹配的潜在问题:
variables: ## Debug and other convenience variables SKIP_SCANS: "true" include: - project: "blah/gitlab-ci-templates" file: "/templates/sonarqube.gitlab-ci.yml" ref: "blahblah/1.0.8" rules: - if: '$SKIP_SCANS != "true"'
额外注意
手动触发流水线时,确保输入的SKIP_SCANS值是字符串类型(比如输入"false"或者直接false,GitLab会自动处理为字符串),不要使用布尔值类型的输入,避免变量解析异常。
内容的提问来源于stack exchange,提问作者Shashi
相关产品推荐
相关产品推荐

