首页 > 解决方案 > Azure DevOps 变量意外设置为 Null

问题描述

我有一个包含多个工作的管道。出于某种原因,设置阶段的变量在从作业运行的条件下为 Null。

这是管道yaml:

https://github.com/ossentoo/azdo-yaml-varsdemo/tree/feature/private-agent

我不希望评估为 false 的语法在 child.yml 中(第 24 行):

子 yaml

我已附加 Azure DevOps日志中的文件之一

在第 73 行的日志中,显示如下:

日志

问题是,如果值是在阶段设置的,为什么变量 applicationsList 为 Null?我尝试将语法更改为 variables.applicationsList,但这似乎也不起作用。

谢谢

谢谢

标签: azure-devopsazure-pipelinesazure-pipelines-yaml

解决方案


问题是${{ ... }}语法是在编译时评估的。在那个时间点,该值仍然未定义。

相反,您可以使用condition: $[ ... ]. 该语法将在运行时进行评估。

看:

- ${{ each folder in parameters.folders }}:
  - deployment: ${{replace( folder ,'-','_')}}
    displayName: 'Apply ${{ folder }}'
    timeoutInMinutes: 480
    condition: $[contains(variables['applicationsList'], ${{folder}})]

推荐阅读