Azure DevOps 2019条件表达式无法正常生效问题求助
问题根因
- 最常见的原因是参数类型不匹配:如果你的
runTests参数在模板中定义为boolean类型,你传入的实际值是布尔型的true,但你在判断时用了字符串格式的'true',布尔值和字符串对比结果自然为false。 - 第二种可能是编译时参数解析异常:如果你传入的
runTests是运行时变量(即用$(变量名)格式赋值的参数),${{ }}格式的模板表达式是在编译阶段解析的,此时无法读取运行时变量的实际值,只会拿到空值或者默认值,导致判断失败。 - 你之前Job层级condition不生效的原因是你把模板表达式包裹在了单引号内:如果
runTests是布尔类型,'${{ parameters.runTests }}'会被解析为首字母大写的字符串'True',和小写的'true'对比也会返回false。
解决方法
- 优先修改条件判断的匹配值类型,去掉
true的引号,直接匹配布尔值:
- ${{ if eq(parameters.runTests, true) }}: - task: UiPathTest@2 inputs: testTarget: 'TestProject' orchestratorConnection: 'Orch' testProjectPath: '$(Build.SourcesDirectory)\$(projectPath)' folderName: $(folderName)
- 如果你确实需要用字符串类型判断,将模板中
runTests的参数类型改为string,传入参数时统一用小写的'true'字符串即可。 - 如果你的
runTests值来自运行时变量,不要用编译时的模板表达式,改用步骤层级的condition字段:
- task: UiPathTest@2 condition: eq(variables['runTests'], 'true') inputs: testTarget: 'TestProject' orchestratorConnection: 'Orch' testProjectPath: '$(Build.SourcesDirectory)\$(projectPath)' folderName: $(folderName)
内容的提问来源于stack exchange,提问作者user1279914
相关产品推荐
相关产品推荐

