Azure Devops Pipeline:第二个参数依赖于第一个参数

Roz*_*ryn 8 parameters pipeline conditional-statements azure-devops

在azure devops中,用户对第一个参数的选择是否有可能决定第二个参数(类型、显示名称等)?

例如:

parameters:
- name: parametr1
  displayName: example1
  type: string
  default: first
  values:
  - first
  - second
  - third
Run Code Online (Sandbox Code Playgroud)

而如果用户在启动管道时选择“first”,则要输入第二个参数:

- name: parametr2.1
  displayName: example2
  type: number
Run Code Online (Sandbox Code Playgroud)

但如果用户在启动管道时选择“第二”,则要输入第二个参数:

- name: parametr2.2
      displayName: example2.2
      type: boolean

   
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助 :)

Leo*_*SFT 0

Azure Devops Pipeline:第二个参数依赖于第一个参数

这个问题目前恐怕还没有办法解决。

这是因为目前条件不支持参数。我们无法向第二个参数添加条件以根据第一个参数设置值。

众所周知,运行时参数用于让您更好地控制可以传递给管道的值。

由于第二个参数取决于第一个参数,不需要我们手动控制它。

因此,作为此问题的解决方法,我们可以使用带有条件的Logging Command根据第一个参数的值设置第二个参数:

parameters:
- name: parametr1
  displayName: example1
  type: string
  default: first
  values:
  - first
  - second
  - third

trigger: none

jobs:
- job: build
  displayName: build
  pool: 
    name: MyPrivateAgent

  steps:
  - task: InlinePowershell@1
    displayName: 'SetVariableV1'
    inputs:
      Script: 'Write-Host "##vso[task.setvariable variable=parametr2.1;]123456"'
    condition: and(succeeded(), eq('${{ parameters.parametr1 }}', 'first'))

  - task: InlinePowershell@1
    displayName: 'SetVariableV2'
    inputs:
      Script: 'Write-Host "##vso[task.setvariable variable=parametr2.2;]true"'
    condition: and(succeeded(), eq('${{ parameters.parametr1 }}', 'second'))
Run Code Online (Sandbox Code Playgroud)

我在我这边测试了一下,效果很好。