Azure 管道 YAML 发布,并行部署

时间:2021-02-05 14:53:07

标签: azure-pipelines azure-pipelines-release-pipeline azure-pipelines-yaml

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

构建管道没问题,我在 Yaml 中编写了一些管道来充当发布管道。 每次,第一阶段构建项目,下一阶段发布到暂存阶段,我们使用环境来强制执行发布前的批准到预生产和再次批准,在生产之前。

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

  • 核心
  • 界面
  • API

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

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*]

我遇到的问题是阶段是按顺序运行的,当第一个阶段请求批准进入预生产时,它将停止运行

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

- 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

可以吗?

谢谢

1 个答案:

答案 0 :(得分:0)

<块引用>

Azure 管道 YAML 发布,并行部署

因为如果我们不指定关键字dependsOn,默认情况下管道将按顺序执行。

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

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

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

enter image description here