Azure DevOps 构建变量 Build.Reason 可以用于 YAML 模板编译时条件吗?

Can Azure DevOps build variable Build.Reason be used in YAML template compile time conditions?

我想要这样的东西:

  - ${{ if or(eq(parameters.RunTestsOnPRBuildOnly, false), eq(variables.Build.Reason, 'PullRequest')) }}:
      - template: ps-module-run-tests.yml

这不起作用,因为 variables.Build.Reason 是空的。有可能吗?

请注意,我知道如何修改 ps-module-run-tests.yml 模板以将我的愿望表达为运行时条件。换句话说,我知道如何得出这个结论:

我很好奇的是Build.Reason是否可以在编译时条件下使用,以至于这些步骤甚至都不会被渲染。从表面上看,这并没有内在的问题,因为该值在一开始就已知,但这取决于模板何时编译。如果太早,那是不可能的,但我不知道这些细节。也许我做不到,因为我错过了一些东西。

那么,有可能吗?

而不是

variables.Build.Reason

尝试使用

variables['Build.Reason']

根据https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#build-variables-devops-services Build.Reason 在编译时可用于模板表达式

我看过 https://docs.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops#conditional-insertion 有一个例子也有注意,如果你想使用 属性 取消引用语法它只能包含 所以点号是不可接受的(Build 和 Reason 之间的点)