使用 Azure Devops Pipeline 中的变量进行条件 OR 操作

Roz*_*ryn 7 yaml conditional-statements azure-devops azure-pipelines

我有三个条件作为变量(isMaster、isRelease、isHotfix):

variables:
  isMaster: $[startsWith(variables['Build.SourceBranch'], 'refs/heads/master')]
  isRelease: $[startsWith(variables['Build.SourceBranch'], 'refs/heads/release/')]
  isHotfix: $[startsWith(variables['Build.SourceBranch'], 'refs/heads/hotfix/')]
  checkCondition: $[or(variables.isMaster, variables.isRelease)]
Run Code Online (Sandbox Code Playgroud)

问题是当我为 OR 条件(如 checkCondition)取两个“假”时。我应该得到“假”,但由于某种原因我得到“真”。

  - task: CmdLine@2
       inputs:
         script: |
           echo %BUILD_SOURCEBRANCH%
           echo %ISMASTER%
           echo %ISRELEASE%
           echo %ISHOTFIX%
           echo %CHECKCONDITION%
       condition: or(variables.isMaster ,variables.isRelease)
...
Result:
...
refs/heads/someBranch
False
False
False
True
Finishing: CmdLine
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么该条件会给出错误的结果?谢谢你!

Cec*_*SFT 18

当使用OR 函数时,需要使用or(expression, expression),然后它将表达式转换为布尔值进行计算。如果使用or(variables.isMaster ,variables.isRelease),则有两个字符,没有表达式可转换为布尔值。你需要用or(startsWith(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'))它来代替。