Azure devops 如何使用在Azure DevOps中具有阶段依赖关系的Dependesson
我有以下用于多阶段部署的模板:Azure devops 如何使用在Azure DevOps中具有阶段依赖关系的Dependesson,azure-devops,azure-pipelines,azure-pipelines-yaml,Azure Devops,Azure Pipelines,Azure Pipelines Yaml,我有以下用于多阶段部署的模板: parameters: - name: Stage type: string - name: Environment type: string - name: Enabled type: boolean default: false - name: WebAppName type: string - name: ArtifactName type: string stages: - stage: ${{ parameters.Sta
parameters:
- name: Stage
type: string
- name: Environment
type: string
- name: Enabled
type: boolean
default: false
- name: WebAppName
type: string
- name: ArtifactName
type: string
stages:
- stage: ${{ parameters.Stage }}
displayName: '${{ parameters.Stage }} Stage'
dependsOn: '${{ parameters.DependsOn }}'
jobs:
- deployment: ${{ parameters.Environment }}
timeoutInMinutes: 70
environment: '${{ parameters.Environment }} Environment'
pool:
vmImage: $(vmImageName)
strategy:
runOnce:
deploy:
steps:
- task: DownloadBuildArtifacts@0
inputs:
buildType: 'current'
downloadType: 'single'
artifactName: ${{ parameters.ArtifactName }}
downloadPath: '$(System.ArtifactsDirectory)'
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: 'AzureConnectionSC'
appType: 'webApp'
WebAppName: ${{ parameters.WebAppName }}
package: '$(System.ArtifactsDirectory)/**/*.zip'
从我的管道中,我使用的是模板:
- template: azure-pipelines-multi-stage-release.yml # Template reference
parameters:
Environment: 'Dev'
Enabled: True
WebAppName: 'azureappservicehelloworldapp-dev'
Stage: 'Dev'
ArtifactName : 'helloWorldArtifact'
- template: azure-pipelines-multi-stage-release.yml # Template reference
parameters:
Environment: 'UAT'
Enabled: True
WebAppName: 'azureappservicehelloworld-uat'
Stage: 'UAT'
ArtifactName : 'helloWorldArtifact'
- template: azure-pipelines-multi-stage-release.yml # Template reference
parameters:
Environment: 'Prod'
Enabled: True
WebAppName: 'azureappservicehelloworld'
Stage: 'Prod'
ArtifactName : 'helloWorldArtifact'
如何将DependsOn传递到模板上,在dev中没有阶段依赖关系,因此应该直接部署,但UAT依赖于dev,Prod依赖于UAT。如何将值传递给tempalte,如果没有传递任何内容,则应继续进行部署,如果将某些内容作为依赖项传递,则应在安装之前验证该阶段
请提供帮助。您可以有条件地插入
dependsOn
块:
${{ if ne(parameters.DependsOn, '')}}:
dependsOn: ${{ parameters.DependsOn }}
显然,您还必须在模板中声明
DependsOn
参数。您在模板中声明DependsOn
对象参数。它是必需的,但已在模板中签入。如果不需要依赖项,只需传递一个空的DependsOn。这被设置为一个对象,以便您可以传递一个阶段列表,以防您有一个阶段依赖于多个阶段
按如下方式设置管道:
阶段:
-模板:azure-pipelines-multi-stage-release.yml#模板参考
参数:
环境:“Dev”
已启用:True
WebAppName:“azureappservicehelloworldapp开发”
阶段:发展
工件名称:“helloWorldArtifact”
#空DependsOn,因为Dev不依赖任何东西
德彭森:
-模板:azure-pipelines-multi-stage-release.yml#模板参考
参数:
环境:“UAT”
已启用:True
WebAppName:“azureappservicehelloworld uat”
阶段:UAT
工件名称:“helloWorldArtifact”
德彭森:
-发展
-模板:azure-pipelines-multi-stage-release.yml#模板参考
参数:
环境:“Prod”
已启用:True
WebAppName:“azureappservicehelloworld”
阶段:Prod
工件名称:“helloWorldArtifact”
德彭森:
-UAT
您的模板如下所示:
参数:
-名称:舞台
类型:字符串
-名称:环境
类型:字符串
-名称:已启用
类型:布尔型
默认值:false
-名称:WebAppName
类型:字符串
-名称:工件名称
类型:字符串
-姓名:德彭森
类型:对象
阶段:
-阶段:${parameters.stage}
displayName:“${{parameters.Stage}}Stage”
#仅包括DependsOn参数(如果提供)
${{if parameters.DependsOn}}:
dependsOn:“${{parameters.dependsOn}}”
工作:
-部署:${parameters.Environment}
时间:70分钟
环境:“${parameters.environment}}environment”
游泳池:
vmImage:$(vmImageName)
战略:
跳动:
部署:
步骤:
-任务:DownloadBuildArtifacts@0
投入:
buildType:“当前”
下载类型:'single'
artifactName:${{parameters.artifactName}}
下载路径:“$(System.ArtifactsDirectory)”
-任务:AzureRmWebAppDeployment@4
投入:
连接类型:“AzureRM”
azureSubscription:“AzureConnectionSC”
appType:'webApp'
WebAppName:${{parameters.WebAppName}}
包:“$(System.ArtifactsDirectory)/***.zip”
您的渠道将扩展到:
阶段:
-阶段:发展
显示名称:开发阶段
工作:
-部署:Dev
时间:70分钟
环境:
名称:开发环境
游泳池:
vmImage:$(vmImageName)
战略:
跳动:
部署:
步骤:
-任务:DownloadBuildArtifacts@0
投入:
buildType:“当前”
下载类型:'single'
工件名称:helloWorldArtifact
下载路径:“$(System.ArtifactsDirectory)”
-任务:AzureRmWebAppDeployment@4
投入:
连接类型:“AzureRM”
azureSubscription:“AzureConnectionSC”
appType:'webApp'
WebAppName:azureappservicehelloworldapp开发
包:“$(System.ArtifactsDirectory)/***.zip”
-阶段:UAT
显示名称:UAT阶段
德彭森:
-发展
工作:
-部署:UAT
时间:70分钟
环境:
名称:UAT环境
游泳池:
vmImage:$(vmImageName)
战略:
跳动:
部署:
步骤:
-任务:DownloadBuildArtifacts@0
投入:
buildType:“当前”
下载类型:'single'
工件名称:helloWorldArtifact
下载路径:“$(System.ArtifactsDirectory)”
-任务:AzureRmWebAppDeployment@4
投入:
连接类型:“AzureRM”
azureSubscription:“AzureConnectionSC”
appType:'webApp'
WebAppName:azureappservicehelloworld uat
包:“$(System.ArtifactsDirectory)/***.zip”
-阶段:Prod
显示名称:Prod阶段
德彭森:
-UAT
工作:
-部署:Prod
时间:70分钟
环境:
名称:Prod环境
游泳池:
vmImage:$(vmImageName)
战略:
跳动:
部署:
步骤:
-任务:DownloadBuildArtifacts@0
投入:
buildType:“当前”
下载类型:'single'
工件名称:helloWorldArtifact
下载路径:“$(System.ArtifactsDirectory)”
-任务:AzureRmWebAppDeployment@4
投入:
连接类型:“AzureRM”
azureSubscription:“AzureConnectionSC”
appType:'webApp'
WebAppName:azureappservicehelloworld
包:“$(System.ArtifactsDirectory)/***.zip”
您是否检查了以下回复?您的问题解决了吗?嗨,Cece Don,下面的答案很有帮助,但它仍在进行下一步,而无需等待。取决于,我在环境管道下找到了一个解决方案,只需单击其中的一个环境即可