Azure Devops:如何使用 if 语句设置组变量

Bin*_*ino 3 yaml azure azure-devops azure-pipelines

我正在尝试根据管道中存在的一个变量设置变量组。yaml 看起来像这样:

在此处输入图片说明

但是当我运行管道时出现以下错误:

在此处输入图片说明

如果我删除“- group : QA”“- group : PROD”,管道运行没有任何问题。我究竟做错了什么?

Mer*_*SFT 6

尝试使用以下架构:

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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

注意:当您定义上述 YAML scipt 时,您可能会收到一些红色警告。忽略那个令人困惑的警告并继续运行它。


Krz*_*tof 5

这是稍微不同的解决方案,但您可以实现您的目标 - 如果我理解变量组的条件选择。

您可以使用运行时参数:

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)
Run Code Online (Sandbox Code Playgroud)

与运行构建相比,您可以选择您的环境:

运行构建

注意:我在两个组中都定义了两个变量组 QA 和 PROD,并带有变量名称。