有条件地继承 YAML 模板

Inherting YAML templates on conditional basis

我有一个用于 Azure 数据工厂的 DEV、ACC、PRD 的 Yaml 模板。我也有一个用于网络应用程序。

我想要一个额外的选项,通过继承(或重用)将它们一起部署在一个 Yaml 中。这样我就可以单独或成组部署它们。可能吗?

这是我的yaml模板a的示例

trigger: none

stages:
- stage: DEV
  variables:
    environment: 't'
    system.debug: true
  jobs :
  - template: shared-build.yml
    parameters:
      location: 'westeurope'
- stage: ACC
  variables:
    environment: 'd'
    system.debug: true
  jobs :
  - template: shared-build.yml
    parameters:
      location: 'westeurope'
- stage: PRD
  variables:
    environment: 'd'
    system.debug: true
  jobs :
  - template: shared-build.yml
    parameters:
      location: 'westeurope'

这是构建部分(未添加所有参数)

parameters:
- name: location
  type: string
  default: ''

jobs:
  - deployment: Build
    pool:
        name: Azure Pipelines
        vmImage: windows-2019
    environment: '${{ parameters.devopsEnv }}'
    strategy:
      runOnce:
        deploy:
          steps:
          - checkout: self
          - task: AzureKeyVault@1
            inputs:
              azureSubscription: '${{ parameters. subscription }}'
              keyVaultName: '${{ parameters.keyVaultName }}'

您可以在 yaml 文件中使用参数和条件:

parameters:
  - name: DEV
    type: boolean
    default: true
  - name: ACC
    type: boolean
    default: true
  - name: PRD
    type: boolean
    default: true

stages:
- stage: DEV
  condition: eq(${{ parameters.DEV }},'true')
  variables:
    environment: 't'
    system.debug: true
  jobs :
  - template: shared-build.yml
    parameters:
      location: 'westeurope'
- stage: ACC
  condition: eq(${{ parameters.ACC }},'true')
  variables:
    environment: 'd'
    system.debug: true
  jobs :
  - template: shared-build.yml
    parameters:
      location: 'westeurope'
- stage: PRD
  condition: eq(${{ parameters.PRD }},'true')
  variables:
    environment: 'd'
    system.debug: true
  jobs :
  - template: shared-build.yml
    parameters:
      location: 'westeurope'

当 运行宁管道时,您可以选择要 运行 的阶段。