【发布时间】:2024-01-22 06:56:01
【问题描述】:
我有三个条件作为变量(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)]
问题是当我为 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
任何人都知道为什么条件给出错误的结果? 谢谢!
【问题讨论】:
-
你能试试
condition: or(variables.isRelease ,variables.isMaster)吗?它可以有所作为developercommunity.visualstudio.com/content/problem/1236160/… -
@KrzysztofMadej 那会很有趣。我过去也遇到过类似的问题。您可以尝试将您的 or 条件包装在:
and(succeeded(), <your or condition>). -
不幸的是它仍然不正确(我得到了“真实”)。
-
但是如果我在 OR $[or(startsWith(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'] , 'refs/heads/release/'))],我得到了正确的 'false' :/
标签: azure-devops yaml conditional-statements azure-pipelines