Azure Devops:如何使用 if 语句设置组变量
Posted
技术标签:
【中文标题】Azure Devops:如何使用 if 语句设置组变量【英文标题】:Azure Devops: How to set group variable with if statement 【发布时间】:2020-07-13 09:11:42 【问题描述】:我正在尝试根据管道中存在的一个变量来设置变量组。 yaml 看起来像这样:
但是当我运行管道时出现以下错误:
如果我删除 "- group : QA" 或 "- group : PROD" 管道运行没有任何问题。我做错了什么?
【问题讨论】:
【参考方案1】:这是略有不同的解决方案,但您可以实现您的目标 - 如果我理解变量组的条件选择。
您可以使用运行时参数:
parameters:
- name: environment
displayName: Environment
type: string
default: QA
values:
- QA
- PROD
stages:
- stage:
displayName: 'Build and Restore'
variables:
- group: $ parameters.environment
jobs:
- job:
steps:
- script: echo $(name)
除了运行构建,您还可以选择您的环境:
注意:我在两个组中定义了两个变量组 QA 和 PROD,变量名。
【讨论】:
我真的很喜欢你的方法!效果很好,谢谢!【参考方案2】:尝试以下架构:
variables:
isProd: true
stages:
- stage: Test
displayName: Build and restore
variables:
- $ if eq(variables['isProd'], 'false') :
- group: QA
- $ if eq(variables['isProd'], 'true') :
- group: PROD
jobs:
- job: A
steps:
- bash: echo $(groupname)
注意:您在定义上述 YAML scipt 时可能会收到一些红色警告。忽略那个令人困惑的警告并继续运行它。
【讨论】:
它对我不起作用。我能做错什么? ==================================================== ============================= 生成脚本。脚本内容: echo $(groupname) =========================== 开始命令输出 ============= ============== /bin/bash --noprofile --norc /home/vsts/work/_temp/f1c09eb7-1ef2-43ab-b0e6-7a4905c67b8d.sh /home/vsts/work /_temp/f1c09eb7-1ef2-43ab-b0e6-7a4905c67b8d.sh: line 1: groupname: command not found Finishing: Bash @Krzysztof,QA 和 PROD 变量组是否已在您的 Library 中创建? 好的。所以 groupname 是组内的变量,对吧?它不是内置变量 :) 一切正常。假设 groupname 是包含已使用组的内置变量,我犯了错误。 @Krzysztof 不,QA 和 PROD 只是变量组名称,它们不存储在任何组中。我的意思是你需要像这样创建这个变量组:imgur.com/a/rr7z1sX @Merlin Liang - MSFT 是的,我知道。我的错误是我没有在组 QA 和 PROD 中创建组名变量。一切都很好。非常感谢!以上是关于Azure Devops:如何使用 if 语句设置组变量的主要内容,如果未能解决你的问题,请参考以下文章
Azure DevOps系列Azure DevOps构建.NET EFCore应用程序
如何使用 Yarn 注册表作为 Azure DevOps 工件上游源?
在 VS Code 和 TypeScript 中调试 Azure DevOps 自定义任务时如何设置输入变量
isUpgrade 设置如何影响 Azure DevOps 中 Service Fabric 应用程序部署任务中的部署过程
如何将 Azure DevOps Extension for Azure CLI 与 Azure DevOps Server 一起使用?