如何在Azure DevOps中将条件值赋给变量? [英] How to assign conditional value to variable in Azure DevOps?

查看:29
本文介绍了如何在Azure DevOps中将条件值赋给变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将条件值分配给Azure DevOps中的环境变量,但它不起作用。 这是我的管道代码:

pr: none
trigger: none

stages:
  - stage: Mail
    variables:
    - group: API_Key
    jobs:
      - job: Sending_Email
        variables:
          ${{ if ne( variables['RecipientEmail'], '' ) }}:
            EmailId: $(RecipientEmail)
          ${{ if eq( variables['RecipientEmail'], '' ) }}:
            EmailId: $(DefaultEmailId)
        steps:
           - script: echo Mail id after condition is - $(EmailId)
在这里,我获取了2个环境变量&RecipientEmail&Quot;和&Quot;DefaultEmailId&Quot;,并在此基础上为新变量&EmailId&Quot;赋值。但它不起作用。在这两种情况下,它都会选取";DefaultEmailId";值。

例如: 默认电子邮件ID:abc@example.com 收件人电子邮件:xy@example.com

Ideal Output: Mail id after condition is - xyz@example.com

Current Output: Mail id after condition is - abc@example.com

在此,我还收到警告:定义";EmailId";变量条件时,";键";重复。

推荐答案

如果DefaultEmailId: abc@example.comRecipientEmail: xyz@example.com设置在以下变量组中:API_Key,我们可以看到相同的问题。

经过研究,我们发现有一张关于它的建议票:https://developercommunity.visualstudio.com/t/azure-pipelines-yaml-set-variable-based-on-conditi/690246,您可以投票并关注这张票。您还可以新建建议单here。产品组将定期审核这些票证,并考虑将其作为路线图。

作为解决办法,您可以set variables in scripts

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      if ('$(RecipientEmail)' -eq '') {
        Write-Host "##vso[task.setvariable variable=EmailId]$(DefaultEmailId)"
      } else {
        Write-Host "##vso[task.setvariable variable=EmailId]$(RecipientEmail)"
      }
- script: |
    echo Mail id after condition is -  $(EmailId)

这篇关于如何在Azure DevOps中将条件值赋给变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆