Azure devops 为什么我的azure devops变量没有计算为bool? 问题:
我是否可以将我的类型强制转换为bool,以便在声明变量时不使用Azure devops 为什么我的azure devops变量没有计算为bool? 问题:,azure-devops,Azure Devops,我是否可以将我的类型强制转换为bool,以便在声明变量时不使用eq() 我的变量 这很有效 这不起作用(但我希望它能像这样起作用) 我可以将我的类型强制转换为bool,这样在声明时它就可以在没有eq()的情况下工作了吗 变量还是我一直坚持使用有效的版本 我想你不需要把这个给布尔。我尝试了你们所有的脚本,它们在我这方面都很有效。如果eq(变量['BUILD\u PUBLISH\u ARTIFACTS','True')可以工作,那么在您的条件下变量['BUILD\u PUBLISH\u ARTIF
eq()
我的变量
这很有效
这不起作用(但我希望它能像这样起作用)
我可以将我的类型强制转换为bool,这样在声明时它就可以在没有eq()的情况下工作了吗
变量还是我一直坚持使用有效的版本
我想你不需要把这个给布尔。我尝试了你们所有的脚本,它们在我这方面都很有效。如果eq(变量['BUILD\u PUBLISH\u ARTIFACTS','True')
可以工作,那么在您的条件下变量['BUILD\u PUBLISH\u ARTIFACTS']
也应该工作
除了上述组合,我还尝试了条件:和(变量['BUILD\u xxx'],eq(变量['BUILD\u xxx'],'True'))
,它也起作用。因此,您不需要将其转换为bool,和()
可以很好地识别它们
在我看来,在对管道做了几次更改之后,可能会出现问题。您是否在同一场景中测试了这两个脚本?同一管道,同一分支
单击此按钮,您将找到问题的直接原因:
希望能有所帮助。这是一件奇怪的事情-我还添加了一个构建步骤来打印我的变量,该步骤返回True/False,这促使我在使用和(succeed(),variables[])时尝试eq(variables[],'')
这两个步骤都运行,而不是我想要的步骤,即使使用扩展变量进行juding,也只应执行一个步骤。当变量是编译/运行时表达式时,可能会有差异吗?我不确定这个奇怪的问题是否与编译/运行时表达式有关,因为我无法在我的计算机中重现它。这两种格式总是给我相同的结果,都运行或都跳过(不运行)。你有没有点击按钮来获取更多的信息,比如我在答案的末尾所显示的信息?它能给你一些提示吗?我没有看到你在截图中显示的工具提示。您使用的是纯yaml构建管道吗?如果您查看我添加到问题中的这个屏幕截图,您将看到另一件值得注意的事情-变量扩展为'True'
,而不是True
是的,我还使用yaml管道进行测试。在我的测试中,当条件=>和(True,'True')时,它似乎起作用了。啊哈!这可能就是原因。你用的是和
,我用的是eq
。我很快就会检查我的管道。
variables:
- name: BUILD_PUBLISH_ARTIFACTS
value: ${{or(startsWith(variables['Build.SourceBranch'], 'refs/heads/releases/'), eq(variables['Build.SourceBranch'], 'refs/heads/master'))}}
- name: BUILD_IS_RELEASE
value: ${{startsWith(variables['Build.SourceBranch'], 'refs/heads/releases/')}}
- name: BUILD_IS_ALPHA
value: ${{eq(variables['Build.SourceBranch'], 'refs/heads/master')}}
- task: PowerShell@2
condition: and(succeeded(), eq(variables['BUILD_PUBLISH_ARTIFACTS'], 'True'))
- task: PowerShell@2
condition: and(succeeded(), variables['BUILD_PUBLISH_ARTIFACTS'])