GitLab CI布尔类型输入在rules的if中出现语法错误
解决GitLab CI组件布尔类型Input在Rules中触发的表达式语法错误
GitLab CI组件里用布尔类型的input配置job规则时,直接在if条件里写$[[ inputs.job1-enabled ]]会触发语法错误——因为if规则要求的是字符串形式的表达式,纯布尔值无法被正确解析。
修复方案
在rules的if条件中,将布尔类型的input与布尔常量进行比较,或者转换为字符串后比较,两种写法都能解决问题:
写法1:直接与布尔常量比较
修改后的component.yml代码:
# component.yml spec: inputs: job1-enabled: default: true type: boolean job2-enabled: default: true type: boolean --- job1: script: - echo $[[ inputs.job1-enabled ]] rules: - if: $[[ inputs.job1-enabled == true ]] job2: script: - echo $[[ inputs.job2-enabled ]] rules: - if: $[[ inputs.job2-enabled == true ]]
写法2:转换为字符串后比较
如果担心布尔值的解析问题,也可以把input转为字符串再和'true'比较:
job1: rules: - if: $[[ to_string(inputs.job1-enabled) == 'true' ]]
效果说明
修改后,流水线会正确识别布尔input的配置:
job1-enabled默认是true,job1会正常执行;- 主配置中设置
job2-enabled: false,job2会被跳过。
内容的提问来源于stack exchange,提问作者Dorian Turba
相关产品推荐
相关产品推荐

