gpt4 book ai didi

azure-devops - Azure Devops yml 管道 if else 条件变量

转载 作者:行者123 更新时间:2023-12-05 09:03:42 28 4
gpt4 key购买 nike

我正在尝试在 Azure Devops yml 管道中使用 if else 条件和变量组。 I am trying to implement it as per latest Azure Devops yaml pipeline build .

以下是我的场景中 if else 条件的示例代码。 test 是 my-global 变量组中的一个变量。

variables:
- group: my-global
- name: fileName
${{ if eq(variables['test'], 'true') }}:
value: 'product.js'
${{ elseif eq(variables['test'], false) }}:
value: 'productCost.js'

jobs:
- job:
steps:
- bash:
echo test variable value $(fileName)

当执行上面的代码时,在 echo 语句中我们没有看到文件名的任何值,即它是空的,这意味着上面的 if else 条件都没有被执行,但是当我用以下条件测试 if else 条件时.

  - name: fileName
${{ if eq('true', 'true') }}:
value: 'product.js'

文件名确实回应了正确的值,即 product.js。所以我的结论是我无法正确引用变量组中的变量。所以任何建议都会有所帮助和赞赏。谢谢!

最佳答案

不幸的是,Azure DevOps Pipelines 中没有三元运算符。考虑到 https://github.com/microsoft/azure-pipelines-yaml/issues/256 的状态,这似乎不太可能和 https://github.com/microsoft/azure-pipelines-yaml/issues/278 .所以目前唯一的选择是:

  • conditional insertion : 它与参数一起工作,并且根据文档应该与变量一起工作(但很难正确使用),
  • 或您可以在这个 Stack Overflow 问题中找到的技巧。

Simon Alling 在 GitHub (https://github.com/microsoft/azure-pipelines-yaml/issues/256#issuecomment-1077684972) 上发布了另一个解决方法:

format(
replace(replace(condition, True, '{0}'), False, '{1}'),
valueIfTrue,
valueIfFalse
)

它类似于 Tejas Nagchandi 提供的解决方案,但我发现它稍微好一点,因为语法看起来更接近于存在三元运算符时的语法。

关于azure-devops - Azure Devops yml 管道 if else 条件变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69652609/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com