如何在 azure devops yml 中使用变量组作为运行时参数

How to use variable group as a runtime parameter in azure devops yml

我想将变量组作为 运行 时间参数传递,这样每当我 运行 管道时,它应该允许我提供输入变量组名称,并基于在我的管道应该继续进行的 运行 时间内变量组的输入值。

我想在我们点击 运行 按钮时实现这一点,然后还有一个可变部分。所以,我希望你从那里接受变量组名称。

Pipeline.yml:

stages:
  - stage: VMBackupandValidate
    displayName: 'VM Backup and Validate using RSV'
    jobs:
      - job: VMBackupValidate
        displayName: 'Azure VM Backup'
        steps:
          - task: AzurePowerShell@5
            inputs:
              azureSubscription: $(azure_sc)
              ScriptType: 'FilePath'
              ScriptPath: 'pipelines/automation/scripts/vmbackup.ps1'
              ScriptArguments: '-ResourceGroupName $(ResourceGroupName) -Storagetype $(Storagetype) -SourceVMname $(SourceVMname) -RSVaultname $(RSVaultname) -Location $(Location) -WorkLoadType $(WorkLoadType) -Policyname $(Policyname) -Verbose'
              azurePowerShellVersion: 'LatestVersion'
              pwsh: true

假设您有两个变量组,名称分别为 prodtest。您可以使用以下管道:

  trigger:
- main

parameters:
  - name: environment
    displayName: Where to deploy?
    type: string
    default: test
    values:
    - prod
    - test


pool:
  vmImage: ubuntu-latest

variables:
 - group: ${{parameters.environment}}

steps:

- script: |
    echo $(ENV)
    echo $(VERSION)
  displayName: Step 1 - print version and environment

- script: pwd ENV ${{parameters.environment}}
  displayName: Step 2 - print parameter

您应该在两个变量组上定义 ENVVERSION 值。

你的舞台应该保持原样。在您的情况下,您将删除我提供的步骤并仅使用管道的第一部分

添加参考文章。

https://blog.geralexgr.com/azure/deploy-between-different-environments-with-variable-groups-azure-devops?msclkid=002b01eab02f11ec8dffa95dc3a34094

根据与OP的评论沟通。

我建议使用具有默认值的参数。如果需要其他值,它会要求您输入,在您点击 运行 之前,然后根据输入为 select 正确的变量设置条件。

这是管道的缩小示例:

parameters:
- name: environment
  displayName: Deploy Environment
  type: string
  default: TEST
  values:
  - TEST
  - PROD

trigger:
- 'none'

variables:
- name: environment
  ${{ if contains(parameters.environment, 'TEST') }}:
    value: TEST
  ${{ if contains(parameters.environment, 'PROD') }}:
    value: PROD

stages: 
- stage: TEST
  displayName: Build
  condition: ${{ eq(variables.environment, 'TEST') }}
  jobs:
  - job:
    pool:
      vmImage: 'ubuntu-20.04'
    steps:
    - script: |
        echo ${{ variables.environment}}
      displayName: 'Print environment info'

您可以扩展逻辑,或将其替换为其他值并稍后在代码中使用它。您可以根据条件创建多个阶段,如图所示。