当我有多构建和多环境时,Azure DevOps yaml文件推荐



我正在实现一个YAML管道,以便将应用程序部署到四个不同的环境中。不幸的是,我每次都需要执行特定于环境的构建。我在一个仓库中有四个前端门户和8个微服务(.NET web API(相关代码。

例如,我有一个前端的角度代码,我需要执行npm-run-dev:build、npm-run-dv:qa。。。npm运行prod:prod来为每个环境生成工件,然后我可以在相应的环境中进行部署。

使用环境分支策略,我可以很容易地部署,这意味着维护Dev、QA、UAT和PROD等分支。通过创建拉请求,我可以合并并部署到相应的环境中。但我不想要这种复杂的分支策略。

因此,我决定创建一个单独的yaml,并使用参数和条件在相应的环境中进行部署,点击如下Azure DevOps yaml未获取参数

由于我有4个前端门户和8个微服务,手动点击很难运行管道。因此,我决定至少为Dev和QA添加触发器,并使用Release/*分支将代码部署到更高的环境中。

但当我使用触发器和参数时,管道并没有运行。当我包括参数时,我想Trigger是None。

trigger:
- dev 
parameters:     
- name: environment    
displayName: Environment to choose    
type: string
values:
- UAT

variables:    
vmImageName: 'windows-2019'
stages:
- stage: DevBuildStage
dependsOn: []
displayName: Dev_Build
jobs:
- job: Build_Job
displayName: Build
pool:
vmImage: $(vmImageName)
steps:
- task: PowerShell@2
displayName: command1
inputs:
targetType: 'inline'
script: |
Write-Host "This is Dev build"
- stage: UATBuildStage
condition: and(succeeded(), eq('${{ parameters.environment }}', 'UAT'))
dependsOn: []
displayName: UAT_Build
jobs:
- job: Build_Job
displayName: Build
pool:
vmImage: $(vmImageName)
steps:
- task: PowerShell@2
displayName: command1
inputs:
targetType: 'inline'
script: |
Write-Host "This is UAT build"

- stage: DeploytoDev
displayName: Deploy to Dev 
dependsOn: DevBuildStage
condition: succeeded()
jobs:
- deployment: Deploy
displayName: Deploy
environment: 'development'
variables:
- group: dev
pool:
vmImage: $(vmImageName)
strategy:
runOnce:
deploy:
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Write-Host "Deploy to Dev"

- stage: DeploytoUAT
displayName: Deploy to UAT
dependsOn: UATBuildStage
condition: succeeded()
jobs:
- deployment: Deploy
displayName: Deploy
environment: 'uat'
pool:
vmImage: $(vmImageName)
strategy:
runOnce:
deploy:
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
# Write your PowerShell commands here.

Write-Host "Deploy to UAT"

这就是我想要自动运行开发人员构建和部署的方式,但UAT我可以在需要手动使用参数的时候运行。这样我想减少分支的数量。

像Dev(开发环境(这样的简单分支策略---Release/*(QA、UAT和PROD(---main(只是为了维护稳定的代码(请在这个问题上帮助我。

最后我决定使用环境分支策略,即将特定的分支部署到环境中。。。Dev(分支(---Dev(环境(。此外,我还使用了模板来重用步骤。

最新更新