我已经运行了 Azure Pipeline。现在,我想仅当运行时某个条件成立时才执行一系列步骤。
Example
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://learn.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops https://learn.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: ...
不起作用。
有没有好的方法可以做到这一点?