Azure pipelines YAML 发布,并行部署

Azure pipelines YAML release, parallel deployments

我正在为几个 dotnet 核心项目开发管道,所有 运行 都在防火墙后面的 Windows 自托管代理上。

构建管道没问题,我在 Yaml 中写了几个管道作为发布管道。 每次,第一阶段构建项目,下一阶段发布到暂存阶段,我们使用环境在发布到预生产之前强制批准,并在生产之前再次批准。

我有几个项目,解决方案包含这些项目:

我为它们中的每一个都创建了发布管道,它们都使用相同的模板: 参数:

stages:
  - stage: Init_1
    jobs:
      [***]

  - stage: Build_1
    dependsOn: Init_1
    jobs:
      - job: Init
      - job: Package
      - job: Build

  - stage: Deploy2ST_1
    dependsOn: Build_1
    jobs:
    - deployment: MoveTo_Staging
      environment: 'myApp ST'
      strategy:
           runOnce:
             deploy:
               steps:
                - task: DownloadPackage@1
                - task: PowerShell@2
                - task: PowerShell@2

  [***]
  and so on for preprod and prod

发布管道这样调用模板:

trigger:
  - none

pool:
  name: '***'

stages:
  - stage: InitRelease
    jobs:
    - job: 'InitJob'
      steps: [***]

  - template: myTemplate.yml@templates
    parameters:
      [* parameters for one project *]

这可行,但我被要求创建一个发布所有三个项目的管道。 我多次尝试调用模板:

stages:
  - stage: InitRelease
    jobs:
    - job: 'InitJob'
      steps: [***]

  - template: myTemplate.yml@templates
    parameters:
      [* parameters for project 1*]

  - template: myTemplate.yml@templates
    parameters:
      [* parameters for project 2*]

  - template: myTemplate.yml@templates
    parameters:
      [* parameters for project 3*]

我遇到的问题是阶段是 运行 顺序的,当第一个请求批准进入 preprod

时它将停止 运行ning

我尝试将模板作为 运行 的作业在一个大阶段并行进行: 阶段:

- stage: OneStageToRunThemAll
  jobs:
  - template: myTemplate.yml@templates
    parameters:
      [* parameters for project 1*]

  - template: myTemplate.yml@templates
    parameters:
      [* parameters for project 2*]

  - template: myTemplate.yml@templates
    parameters:
      [* parameters for project 3*]

但我收到此错误:Unexpected value 'stages',我猜阶段可以插入作业中。

我想要得到的输出是这样的:

 |
 |- Init Project 1 - Init_1 - Build_1 - Deploy2ST_1 - Waiting for approval
 |
 |- Init Project 2 - Init_1 - Build_1 - Deploy2ST_1 - Waiting for approval
 |
 |- Init Project 3 - Init_1 - Build_1 - Deploy2ST_1 - Waiting for approval

可以吗?

谢谢

Azure pipelines YAML release, parallel deployments

那是因为管道默认会按顺序执行,如果我们不指定关键字dependsOn.

要解决这个问题,我们可以尝试在第一阶段的模板中添加关键字dependsOn

stages:
  - stage: Init_1
    dependsOn: InitRelease
    jobs:
      [***]

作为测试结果,并行阶段Angularbuild运行: