更新:2021 年 9 月 9 日
现在我们还有 if else 条件可用: https://learn.microsoft.com/en-us/azure/devops/release-notes/2021/sprint-192-update#new-yaml-conditional-expressions
variables:
${{ if eq(parameters.os, 'win') }}:
testsFolder: windows
${{ elseif eq(parameters.os, 'linux' }}:
testsFolder: linux
${{ else }}:
testsFolder: mac
所以我们可以写
variables:
- name: fileName
${{ if eq(parameters.selectTestRun, 'Product') }}:
value: 'product.js'
${{ elseif eq(parameters.selectTestRun, 'Product with Cost') }}:
value: 'productCost.js'
${{ elseif eq(parameters.selectTestRun, 'Product with Attachments') }}:
value: 'productAttachment.js'
${{ else }}:
value: 'something-else.js'
原回复
你应该使用notIn https://learn.microsoft.com/pl-pl/azure/devops/pipelines/process/expressions?view=azure-devops#notin本例中的表达式:
variables:
- name: fileName
${{ if eq(parameters.selectTestRun, 'Product') }}:
value: 'product.js'
${{ if eq(parameters.selectTestRun, 'Product with Cost') }}:
value: 'productCost.js'
${{ if eq(parameters.selectTestRun, 'Product with Attachments') }}:
value: 'productAttachment.js'
${{ if notIn(parameters.selectTestRun, 'Product', 'Product with Cost', 'Product with Attachments') }}:
value: 'something-else.js'
在这种情况下,您需要每次都重复此操作,如下所示:
${{ if and(eq(parameters.selectTestRun, 'Product'), ne(parameters.testData, True)) }}:
value: 'product.js'
${{ if and(eq(parameters.selectTestRun, 'Product'),eq(parameters.testData, True)) }}:
value: 'productWithTestData.js'
其他 if 也一样。