Azure pipelines YAML 发布,并行部署
Azure pipelines YAML release, parallel deployments
我正在为几个 dotnet 核心项目开发管道,所有 运行 都在防火墙后面的 Windows 自托管代理上。
构建管道没问题,我在 Yaml 中写了几个管道作为发布管道。
每次,第一阶段构建项目,下一阶段发布到暂存阶段,我们使用环境在发布到预生产之前强制批准,并在生产之前再次批准。
我有几个项目,解决方案包含这些项目:
- 核心
- UI
- 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*]
我遇到的问题是阶段是 运行 顺序的,当第一个请求批准进入 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:
[***]
作为测试结果,并行阶段Angular
和build
运行:
我正在为几个 dotnet 核心项目开发管道,所有 运行 都在防火墙后面的 Windows 自托管代理上。
构建管道没问题,我在 Yaml 中写了几个管道作为发布管道。 每次,第一阶段构建项目,下一阶段发布到暂存阶段,我们使用环境在发布到预生产之前强制批准,并在生产之前再次批准。
我有几个项目,解决方案包含这些项目:
- 核心
- UI
- 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*]
我遇到的问题是阶段是 运行 顺序的,当第一个请求批准进入 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:
[***]
作为测试结果,并行阶段Angular
和build
运行: