如何在Azure Devops中的模板上的条件表达式上使用变量

时间:2020-07-09 19:40:02

标签: azure-devops yaml multistage-pipeline

我有多个管道是从多级Yaml构建的(扩展:模板:) 并且我想设置一个条件,让我在传递变量时可以运行哪些作业和步骤。 因此,在这种情况下,我想设置变量“ Migrations = false”,并跳过我的集成作业上的某些作业(迁移作业)和某些步骤(npm运行集成测试)

我尝试使用(跳过migration.yaml上的迁移作业)

stages:
- stage: dev
  displayName: dev
  jobs:
  - ${{if ne(variables.migrations, 'false')}}:
    - template: /Dotnet/Release/migration.yaml

,并且(跳过integration.yaml上的集成脚本)

 jobs:
 - template: /Dotnet/Release/integration.yaml
   parameters:
     migrations: ${{ variables.Migrations }}

###integration.yaml###
- name: 'migrations'
  default: 'true'
  type: string
jobs:
- job: Integration
  steps:  
   - script: "echo step1"
   - ${{if ne(parameters.migrations, 'false')}}:
     - script: npm run integration-tests

1 个答案:

答案 0 :(得分:0)

检查以下示例:

- stage: A
  jobs:
  - job: A
    steps:
    - bash: echo "A"


- stage: B
  variables:
    someVar: true
  jobs:
  - job: B
    steps:
    - ${{ if ne(variables['someVar'], 'false') }}:
      - template: resource-template.yml
    - script: echo hi
  - template: test.yml
    parameters:
      migrations: ${{ variables.someVar }}


#test.yml

parameters:
- name: 'migrations'
  default: 'false'
  type: string

jobs:
- job: Integration
  steps:  
  - script: "echo step1"
  - ${{ if ne(parameters.migrations, 'true') }}:
      - script: echo hello

注意:

创建yaml文件时,可能会出现红色波浪线(如下面的屏幕截图)。但是架构是正确的,您可以毫无问题地运行它。

enter image description here