添加 & 使用变量组

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

变量组存储可能需要 传递到 YAML 管道 的值和机密,或跨多个管道可用。 可以在同一项目中的多个管道中共享和使用变量组。

变量组是 受保护的资源。 可以向这些变量添加审批和检查,并设置管道权限。

注意

在 Microsoft Team Foundation Server (TFS) 2018 和更低版本中,生成和发布管道被称为“定义”,运行被称为“生成”,服务连接被称为“服务终结点”,阶段被称为“环境”,而作业被称为“阶段” 。

创建变量组

不能在 YAML 中创建变量组,但可以使用它们,如 “使用变量组”中所述。

使用变量组

若要使用变量组中的变量,请在 YAML 文件中添加对组的引用:

variables:
- group: my-variable-group

然后,变量组中的变量可以在 YAML 文件中使用。

如果使用变量和变量组,请使用 name/value 单个非分组变量的语法:

variables:
- group: my-variable-group
- name: my-bare-variable
  value: 'value of my-bare-variable'

若要引用变量组,请使用宏语法或运行时表达式。 In the following example, the group my-variable-group has a variable named myhello.

variables:
- group: my-variable-group
- name: my-passed-variable
  value: $[variables.myhello] # uses runtime expression

steps:
- script: echo $(myhello) # uses macro syntax
- script: echo $(my-passed-variable) 

可以在同一管道中引用多个变量组。 如果多个变量组包含相同的变量,则 YAML 文件中最后包含的变量组将设置变量的值。

variables:
- group: my-first-variable-group
- group: my-second-variable-group

还可以在模板中引用变量组。 在模板 variables.yml中,将引用组 my-variable-group 。 The variable group includes a variable named myhello.

# variables.yml
variables:
- group: my-variable-group

在此管道中,包含变量组中my-variable-group的变量$(myhello)variables.yml被引用。

# azure-pipeline.yml
stages:
- stage: MyStage
  variables:
  - template: variables.yml
  jobs:
  - job: Test
    steps:
    - script: echo $(myhello)

授权变量组

若要使用变量组,必须对组进行授权。 如果只命名 YAML 中的变量组,则任何可以向存储库推送代码的人都可以提取变量组中机密的内容。 若要授权组,请使用以下技术之一:

  • 若要授权任何管道使用变量组,请转到 Azure Pipelines。 如果组中没有任何机密,这可能是一个不错的选择。 选择 >变量组,然后选择有问题的变量组,并启用“ 允许访问所有管道”设置。

  • 若要为特定管道授权变量组,请打开管道,选择“ 编辑”,然后手动对生成进行排队。 你会看到资源授权错误和错误上的“授权资源”操作。 选择此操作以显式添加管道作为变量组的授权用户。

注意

如果向管道添加变量组,并在预期生成中未收到资源授权错误,请关闭 “允许访问所有管道 ”设置。

TFS 上不提供 YAML 生成。

访问链接变量组中的变量值的方式与 在管道本身中定义的变量相同。 例如,若要访问链接到管道的变量组中名为 客户的 变量的值,请使用 $(customer) 任务参数或脚本。 但是,不能直接在脚本中访问机密变量 (加密变量和密钥保管库变量) -相反,它们必须作为参数传递给任务。 有关详细信息,请参阅 机密

对变量组所做的更改会自动提供给变量组链接到的所有定义或阶段。

列出变量组

使用 CLI 通过 az pipelines variable-group list 命令列出管道运行的变量组。 如果 CLI 的 Azure DevOps 扩展不熟悉,请参阅 Azure DevOps CLI 入门

az pipelines variable-group list [--action {manage, none, use}]
                                 [--continuation-token]
                                 [--group-name]
                                 [--org]
                                 [--project]
                                 [--query-order {Asc, Desc}]
                                 [--top]

可选参数

  • action:指定可在变量组上执行的操作。 接受的值是 管理使用的
  • continuation-token:列出提供延续标记后变量组。
  • group-name:变量组的名称。 接受通配符,例如 new-var*
  • 组织:Azure DevOps 组织 URL。 使用 az devops configure -d organization=ORG_URL. 配置默认组织。 如果未配置为默认或使用 git config选取,则为必需。 示例:--org https://dev.azure.com/MyOrganizationName/
  • 项目:项目的名称或 ID。 使用 az devops configure -d project=NAME_OR_ID. 配置默认项目。 如果未配置为默认或使用 git config选取,则为必需。
  • 查询顺序:按默认) 顺序按升序或降序列出结果 (。 接受的值为 AscDesc
  • top:要列出的变量组数。

示例

以下命令按升序列出前三个变量组,并返回表格格式的结果。

az pipelines variable-group list --top 3 --query-order Asc --output table

ID    Name               Type    Number of Variables
----  -----------------  ------  ---------------------
1     myvariables        Vsts    2
2     newvariables       Vsts    4
3     new-app-variables  Vsts    3

显示变量组的详细信息

使用 az pipelines variable-group show 命令显示项目中变量组的详细信息。 如果 CLI 的 Azure DevOps 扩展不熟悉,请参阅 Azure DevOps CLI 入门

az pipelines variable-group show --group-id
                                 [--org]
                                 [--project]

参数

  • group-id:必需。 变量组的 ID。 若要查找变量组 ID,请参阅 “列出变量组”。
  • 组织:Azure DevOps 组织 URL。 使用 az devops configure -d organization=ORG_URL. 配置默认组织。 如果未配置为默认或使用 git config选取,则为必需。 示例:--org https://dev.azure.com/MyOrganizationName/
  • 项目:项目的名称或 ID。 使用 az devops configure -d project=NAME_OR_ID. 配置默认项目。 如果未配置为默认或使用 git config选取,则为必需。

示例

以下命令显示 ID 为 4 的变量组的详细信息,并返回 YAML 格式的结果。

az pipelines variable-group show --group-id 4 --output yaml

authorized: false
description: Variables for my new app
id: 4
name: MyNewAppVariables
providerData: null
type: Vsts
variables:
  app-location:
    isSecret: null
    value: Head_Office
  app-name:
    isSecret: null
    value: Fabrikam

删除变量组

使用 az pipelines variable-group delete 命令删除项目中的变量组。 如果 CLI 的 Azure DevOps 扩展不熟悉,请参阅 Azure DevOps CLI 入门

az pipelines variable-group delete --group-id
                                   [--org]
                                   [--project]
                                   [--yes]

参数

  • group-id:必需。 变量组的 ID。 若要查找变量组 ID,请参阅 “列出变量组”。
  • 组织:Azure DevOps 组织 URL。 使用 az devops configure -d organization=ORG_URL. 配置默认组织。 如果未配置为默认或使用 git config选取,则为必需。 示例:--org https://dev.azure.com/MyOrganizationName/
  • 项目:项目的名称或 ID。 使用 az devops configure -d project=NAME_OR_ID. 配置默认项目。 如果未配置为默认或使用 git config选取,则为必需。
  • :可选。 不提示确认。

示例

以下命令删除 ID 为 1 的变量组,并且不会提示确认。

az pipelines variable-group delete --group-id 1 --yes

Deleted variable group successfully.

将变量添加到变量组

使用 Azure DevOps CLI,可以使用 az pipelines variable-group variable create 命令将变量添加到管道中的变量组。 如果 CLI 的 Azure DevOps 扩展不熟悉,请参阅 Azure DevOps CLI 入门

az pipelines variable-group variable create --group-id
                                            --name
                                            [--org]
                                            [--project]
                                            [--secret {false, true}]
                                            [--value]

参数

  • group-id:必需。 变量组的 ID。 若要查找变量组 ID,请参阅 “列出变量组”。
  • 名称:必需。 要添加的变量的名称。
  • 组织:Azure DevOps 组织 URL。 使用 az devops configure -d organization=ORG_URL. 配置默认组织。 如果未配置为默认或使用 git config选取,则为必需。 示例:--org https://dev.azure.com/MyOrganizationName/
  • 项目:项目的名称或 ID。 使用 az devops configure -d project=NAME_OR_ID. 配置默认项目。 如果未配置为默认或使用 git config选取,则为必需。
  • secret:可选。 指示变量的值是否为机密。 接受的值为 falsetrue
  • :非机密变量必需。 变量的值。 对于机密变量,如果未提供 参数,则会从带有前缀 AZURE_DEVOPS_EXT_PIPELINE_VAR_ 的环境变量中选择它,或者提示用户通过标准输入输入输入。 例如,可以使用环境变量输入名为 MySecret 的变量 AZURE_DEVOPS_EXT_PIPELINE_VAR_MySecret

示例

以下命令在 ID 为 4 的变量组中创建变量。 新变量命名 为 requires-login ,值为 True,结果以表格式显示。

az pipelines variable-group variable create --group-id 4 --name requires-login --value True --output table

Name            Is Secret    Value
--------------  -----------  -------
requires-login  False        True

列出变量组中的变量

可以使用 az pipelines variable-group variable list 命令列出变量组中的变量。 如果 CLI 的 Azure DevOps 扩展不熟悉,请参阅 Azure DevOps CLI 入门

az pipelines variable-group variable list --group-id
                                          [--org]
                                          [--project]

参数

  • group-id:必需。 变量组的 ID。 若要查找变量组 ID,请参阅 “列出变量组”。
  • 组织:Azure DevOps 组织 URL。 使用 az devops configure -d organization=ORG_URL. 配置默认组织。 如果未配置为默认或使用 git config选取,则为必需。 示例:--org https://dev.azure.com/MyOrganizationName/
  • 项目:项目的名称或 ID。 使用 az devops configure -d project=NAME_OR_ID. 配置默认项目。 如果未配置为默认或使用 git config选取,则为必需。

示例

以下命令列出 ID 为 4 的变量组中的所有变量,并按表格式显示结果。

az pipelines variable-group variable list --group-id 4 --output table

Name            Is Secret    Value
--------------  -----------  -----------
app-location    False        Head_Office
app-name        False        Fabrikam
requires-login  False        True

更新变量组中的变量

使用 az pipelines variable-group variable update 命令更新变量组中的变量。 如果 CLI 的 Azure DevOps 扩展不熟悉,请参阅 Azure DevOps CLI 入门

az pipelines variable-group variable update --group-id
                                            --name
                                            [--new-name]
                                            [--org]
                                            [--project]
                                            [--prompt-value {false, true}]
                                            [--secret {false, true}]
                                            [--value]

参数

  • group-id:必需。 变量组的 ID。 若要查找变量组 ID,请参阅 “列出变量组”。
  • 名称:必需。 要添加的变量的名称。
  • new-name:可选。 指定以更改变量的名称。
  • 组织:Azure DevOps 组织 URL。 使用 az devops configure -d organization=ORG_URL. 配置默认组织。 如果未配置为默认或使用 git config选取,则为必需。 示例:--org https://dev.azure.com/MyOrganizationName/
  • 项目:项目的名称或 ID。 使用 az devops configure -d project=NAME_OR_ID. 配置默认项目。 如果未配置为默认或使用 git config选取,则为必需。
  • prompt-value:设置为 true ,使用环境变量或通过标准输入提示更新机密变量的值。 接受的值为 falsetrue
  • secret:可选。 指示变量的值是否保持机密。 接受的值为 falsetrue
  • :更新变量的值。 对于机密变量,请使用提示 参数提示通过标准输入输入。 For non-interactive consoles, it can be picked from environment variable prefixed with AZURE_DEVOPS_EXT_PIPELINE_VAR_. 例如,可以使用环境变量输入名为 MySecret 的变量 AZURE_DEVOPS_EXT_PIPELINE_VAR_MySecret

示例

以下命令使用 ID 为 4 的变量组中的新值 False 更新 requires-login 变量。 它指定变量 是机密, 以 YAML 格式显示结果。 请注意,输出将值显示为 null 而不是 False ,因为它是一个机密隐藏值。

az pipelines variable-group variable update --group-id 4 --name requires-login --value False --secret true --output yaml

requires-login:
  isSecret: true
  value: null

从变量组中删除变量

使用 az pipelines variable-group variable delete 命令从变量组中删除变量。 如果 CLI 的 Azure DevOps 扩展不熟悉,请参阅 Azure DevOps CLI 入门

az pipelines variable-group variable delete --group-id
                                            --name
                                            [--org]
                                            [--project]
                                            [--yes]

参数

  • group-id:必需。 变量组的 ID。 若要查找变量组 ID,请参阅 “列出变量组”。
  • 名称:必需。 要删除的变量的名称。
  • 组织:Azure DevOps 组织 URL。 使用 az devops configure -d organization=ORG_URL. 配置默认组织。 如果未配置为默认或使用 git config选取,则为必需。 示例:--org https://dev.azure.com/MyOrganizationName/
  • 项目:项目的名称或 ID。 使用 az devops configure -d project=NAME_OR_ID. 配置默认项目。 如果未配置为默认或使用 git config选取,则为必需。
  • :可选。 不提示确认。

示例

以下命令从 ID 为 4 的变量组中删除 requires-login 变量,并提示进行确认。

az pipelines variable-group variable delete --group-id 4 --name requires-login

Are you sure you want to delete this variable? (y/n): y
Deleted variable 'requires-login' successfully.

将现有 Azure 密钥保管库链接到变量组,并将选择性保管库机密映射到变量组。

  1. “变量组 ”页中,将 Azure 密钥保管库中的链接机密作为变量启用。 需要一个包含机密的现有密钥保管库。 使用 Azure 门户创建密钥保管库。

    Screenshot of variable group with Azure key vault integration.

  2. 指定 Azure 订阅终结点和包含机密的保管库的名称。

    确保 Azure 服务连接至少对保管库具有机密的 “获取 ”和 “列出 ”管理权限。 通过选择保管库名称旁边的 “授权 ”,启用 Azure Pipelines 以设置这些权限。 或者,在 Azure 门户中手动设置权限:

    1. 打开保管库 的设置 ,然后选择 “访问策略>添加新”。
    2. 选择主体,然后选择客户端帐户的服务主体。
    3. 选择 “机密”权限 ,并确保 “获取 ”和 “列表 ”具有复选标记。
    4. 选择“确定”以保存更改。
  3. “变量组 ”页上,选择 “+ 添加 ”以从保管库中选择特定机密以映射到此变量组。

管理密钥保管库机密

请参阅以下有关管理机密的有用提示列表。

  • 仅将机密 名称 映射到变量组,而不是机密值。 从保管库提取的最新机密值在链接到变量组的管道运行中使用。

  • 对密钥保管库中 现有 机密所做的任何更改都将自动提供给变量组所使用的所有管道。

  • 在保管库中添加或删除新机密时,不会自动更新关联的变量组。 必须显式更新变量组中包含的机密,以便正确执行使用变量组的管道。

  • Azure Key Vault 支持在 Azure 中存储和管理加密密钥和机密。 目前,Azure Pipelines 变量组集成仅支持从 Azure 密钥保管库映射机密。 不支持加密密钥和证书。

展开组中的变量

在组中设置变量并将其用于 YAML 文件时,它等于 YAML 文件中的其他已定义变量。 有关变量优先级的详细信息,请参阅 变量

TFS 不支持 YAML。