Azure DevOps 构建变量 Build.Reason 是否可以在 YAML 模板编译时条件中使用?

mar*_*ark 5 azure-devops azure-pipelines azure-pipelines-yaml

我想要这样的东西:

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

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

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

在此输入图像描述

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

那么,有可能吗?

Kon*_*kst 6

代替

variables.Build.Reason
Run Code Online (Sandbox Code Playgroud)

尝试使用

variables['Build.Reason']
Run Code Online (Sandbox Code Playgroud)

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

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