Azure Devops yaml管道if else条件与变量

2023-12-14

我正在尝试将 Azure Devops yaml 管道中的 if else 条件与变量组一起使用。我正在尝试按照最新的 Azure Devops yaml 管道构建来实现它.

以下是我的场景中 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 YAML 管道。

问题是${{ if condition }}:是编译时表达式,因此变量组下的变量不可用。

我能够使用运行时表达式$[<expression>]

参考:https://learn.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops

我的管道:

trigger:
  - none

variables:
  - group: Temp-group-for-testing
  - name: fileName
    value: $[replace(replace('True',eq(variables['test'], 'True'), 'value1'),'True','value2')]

stages:
  - stage: test
    jobs: 
     - job: testvar
       continueOnError: false
       steps: 
         - bash: echo $(fileName)
           displayName: "echo variable"

结果可在github

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure Devops yaml管道if else条件与变量 的相关文章

随机推荐

  • .NET 中集合的内存分配

    这可能是一个骗局 我没有找到足够的信息 我正在讨论 Net 中集合的内存分配 集合中分配的元素的内存在哪里 List
  • 如何使用 Bootstrap 在 Django 中自定义复选框和单选框?

    我正在尝试使用 bootstrap 类自定义 Django 中的复选框和单选按钮 然而 这并没有奏效 我已经尝试在 forms py 中插入引导类widgets and attrs custom control custom radio c
  • Sparql 使用变量绑定计数结果

    有什么办法可以bind的结果count到一个变量 我尝试了以下方法 不起作用 SELECT totalSubject WHERE s p o BIND COUNT s AS totalSubject COUNT is an 总计的函数 只能
  • 睡眠/等待,不消耗CPU

    所以我正在将这个智能手机应用程序模拟到 Windows 这是一个运行其逻辑并绘制方法的游戏1 60速度 以毫秒为单位 这是16 6667 我已经实现了这个游戏循环 private const double UPDATE RATE 1000d
  • clusterExport到R并行中的单线程

    我想分割一个大的data frame分成块并将每个块单独传递给集群的不同成员 就像是 library parallel cl lt makeCluster detectCores for i in 1 detectCores cluster
  • iOS 13 Beta 版本中的应用程序启动时应用程序崩溃

    这是崩溃报告 崩溃仅发生在 iOS 13 beta 版本上 Crashed com apple main thread 0 libsystem pthread dylib 0x1ae056484 pthread get qos class
  • SwiftUI 列表正在使用 .navigationBarItems 进行剪辑[重复]

    这个问题在这里已经有答案了 When I add navigationBarItems modifier list is clipping and doesn t take all space like this It should be
  • Google plus API 可像 Facebook 一样在墙上发布

    我一直在谷歌上搜索教程 以便在谷歌加上发布一些文本 但好像没有 我还尝试浏览谷歌为 mac 和 iPhone 开发人员提供的文档 但找不到任何可以解决我的问题的内容 此外 关于如何让用户登录 google plus 帐户的信息也很少 我不确
  • object-fit 如何与 canvas 元素配合使用?

    我一直无法找到任何文档来告诉我一种或另一种方式 我可以在画布元素上使用适合对象的封面吗 我做了一些实验 但它的表现并不符合预期 有人能给我一个明确的答案吗 object fit1 will only have an effect when
  • 为什么我会收到此 NullPointer 异常?

    两个表 一个的主键是另一个的外键 旧数据库 我使用双向一对一映射 Entity public class First Id protected int a OneToOne mappedBy first cascade CascadeTyp
  • 将 Microsoft Office Communicator 2007 集成到 ASP.NET 页面中

    我正在为我公司的 Intranet 使用 ASP NET 和 C 构建网站 那么是否可以将 Microsoft Office Communicator 2007 集成到 ASP NET Page 中 即该网站应该能够提供所有联系人的当前状态
  • PyQt4 - “运行时错误:底层 C/C 对象已被删除”

    我不断收到此运行时错误 我不知道如何修复 这就是我想要实现的目标 当我单击 QTreeView 中的不同项目时 我想用值动态更新此 QTableWidget 在大多数情况下 我的代码可以工作 除非我单击第二个项目并且我需要更新我的 QTab
  • 缓存sql数据库的结果,还是每次查询?

    我正在根据 sql 查询生成页面 这是查询 CREATEPROCEDURE sp searchUsersByFirstLetter searchQuery nvarchar 1 AS BEGIN SET NOCOUNT ON SELECT
  • 以编程方式自动静音 Android 手机的音量?

    我正在开发一个可以自动关闭 Android 手机声音的应用程序 如何检测声音的音量并以编程方式将其关闭 if hour myTime getHour minute myTime getMinute if Settings getSetMyT
  • Twilio环境变量错误

    Twilio Python如果我将 account sid 和 auth token 直接放入代码中 则工作正常 但当我将它们设置为环境变量时 则无法工作 我正在使用 PyCharm 并通过编辑配置 gt 环境变量来设置它们 就像我过去对其
  • 如何根据生效日期获取当前记录?

    如何根据生效日期获取当前记录 我应该使用子查询吗 除了 MAX 之外还有什么可以使用的吗 我有这些表格示例 ResourceID is the ID number of the Resource OrganizationId is the
  • ios 7 中的解密无法使用 aes

    在我的应用程序中 我从 xml 获取数据 数据已加密 我需要解密收到的 nsstring UserName QEjbHvzPjk YuLDVPUJuEA 我需要将此 nsstring 解密为常规格式 我搜索并找到 aes 但它没有进行任何更
  • C# 中的 ArrayList 与 List<>

    有什么区别ArrayList and List lt gt in C 难道仅此而已List lt gt 有一个类型 而ArrayList不是吗 是的 差不多 List
  • preg_replace 屏蔽电话号码的部分内容

    好吧 在重新阅读我之前寻求帮助的帖子后 我发现我没有完全清楚地说明我想要做什么 也没有指出原因 我正在忙于开发一个网站 该网站可能会显示人们留下电话号码的消息 尽管这很愚蠢 我需要负责并确保在这种情况下号码被屏蔽 首先 我需要搜索存储在变量
  • Azure Devops yaml管道if else条件与变量

    我正在尝试将 Azure Devops yaml 管道中的 if else 条件与变量组一起使用 我正在尝试按照最新的 Azure Devops yaml 管道构建来实现它 以下是我的场景中 if else 条件的示例代码 test 是 m