【发布时间】:2021-05-30 09:45:13
【问题描述】:
我的 Azure Pipeline 已经在运行。现在我只想在运行时某个条件为真时执行一系列步骤。
例子
steps:
- template: steps_checkout.yml
# some more steps here
- bash: |
if [ some condition ]; then
echo "##vso[task.setVariable variable=rebuild_lib]false"
echo "Did set rebuild_lib to false"
fi
- if eq( variables.rebuild_lib, true) ):
- template: steps_lib_build.yml
if eq( variables.rebuild_lib, true) ) 行不起作用,因为它不是正确的条件语法。我可以使用
${{ if eq( parameters.something, true ) }}
但这需要在运行时知道。
根据https://docs.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops
表达式也可以是 $[ if eq(variables.rebuild_lib), true] 在运行时进行评估,但是使用它,我得到了
Unexpected value '$[ if eq( variables.rebuild_lib, true) ) ]'
似乎无法在运行时以这种方式修改 yml。
那么我如何决定在运行时使用模板呢?
我可以想象将变量作为参数提供给下一个模板 adapter.yml。这个模板adapter.yml然后将变量作为参数,可以使用${{}}表达式并再次使用下一个模板steps_lib_build.yml ...但仅为此创建模板似乎以某种方式...解决方法。
也使用类似的东西
- template: steps_lib_build.yml
condition: ...
不工作。
有什么好办法吗?
【问题讨论】:
-
这个问题怎么样?下面的答案是否解决了您的问题,如果是,您可以接受它作为答案,这样它可以帮助遇到同样问题的其他社区成员,我们可以存档这个帖子,谢谢。如果没有,请告诉我们您是否需要进一步的帮助。
-
这个问题怎么样?如果您有任何更新,请告诉我。我的回答会对您有所帮助,请您接受它作为答案,这样它可以帮助遇到相同问题的其他社区成员,我们可以存档这个帖子,谢谢。
标签: azure-pipelines azure-pipelines-yaml