我正在为几个 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*]
我遇到的问题是阶段是按顺序运行的,当第一个阶段请求批准进入预生产时,它将停止运行
我尝试将模板作为作业在一个大阶段并行运行: 阶段:
- 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
可以吗?
谢谢