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

Azure devops 如何在Azure Devops中的模板上的条件表达式中使用变量,azure-devops,yaml,multistage-pipeline,Azure Devops,Yaml,Multistage Pipeline,我有多个正在从多级yaml构建的管道(扩展:模板:) 我想设置传递变量时作业和步骤应该运行的条件。 因此,在本例中,我希望设置变量“Migrations=false”,并跳过集成作业上的一些作业(迁移作业)和一些步骤(npm运行集成测试) 我尝试使用(在migration.yaml上跳过迁移作业) 以及(跳过integration.yaml上的集成脚本) 检查以下示例: - stage: A jobs: - job: A steps: - bash: echo "

我有多个正在从多级yaml构建的管道(扩展:模板:) 我想设置传递变量时作业和步骤应该运行的条件。 因此,在本例中,我希望设置变量“Migrations=false”,并跳过集成作业上的一些作业(迁移作业)和一些步骤(npm运行集成测试)

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

以及(跳过integration.yaml上的集成脚本)


检查以下示例:

- 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文件时,可能会出现红色波浪线(如下面的屏幕截图)。但是模式是正确的,您可以毫无问题地运行它


当管道初始化时,变量Migrations的子替换被视为null,因此它采用默认值,在我的例子中为“true”。作业:-模板:/Dotnet/Release/integration.yaml参数:迁移:${{variables.migrations}
 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
- 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