azure-devops - 如何为 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”和“DefaultEmailId”,并在此基础上为新变量“EmailId”赋值。但它不起作用。在这两种情况下,它都会获取“DefaultEmailId”值。
例如: DefaultEmailId:abc@example.com RecipientEmail:xyz@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.com
和RecipientEmail: xyz@example.com
设置在以下变量组中:API_Key
,我们可以看到同样的问题。
经过研究,我们发现有一张关于它的建议票:https://developercommunity.visualstudio.com/t/azure-pipelines-yaml-set-variable-based-on-conditi/690246,您可以投票并关注此票。您还可以在此处创建新的建议票 。产品组会定期审核这些工单,并考虑将其作为路线图。
作为一种解决方法,您可以在脚本中设置变量。
- 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)
推荐阅读
- mysql-error-1064 - 如何在 id 明智的情况下列值显示 null 或 0
- sql - TYPO3逻辑或数据库查询中的优先级
- c# - C#中的自定义模式匹配
- javascript - 开玩笑匹配器匹配三个值中的任何一个
- testing - Ember JS 测试 - 工厂人
- mongodb - 如何将isodate的mongodb日期字段转换为本地日期
- flutter - 不包含脚手架错误。我知道我的方法没有脚手架方法,但它是具有脚手架的方法的子方法
- java - 如何简化这段代码?
- r - 我可以将一个 PCA 的变量坐标覆盖在来自第二个 PCA 的个人坐标上并仍然解释结果吗?
- angular - 部署到 AWS 服务器后,Angular 4/5 中仅加载默认 url 组件