Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure devops 如何使用在Azure DevOps中具有阶段依赖关系的Dependesson_Azure Devops_Azure Pipelines_Azure Pipelines Yaml - Fatal编程技术网

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,下面的答案很有帮助,但它仍在进行下一步,而无需等待。取决于,我在环境管道下找到了一个解决方案,只需单击其中的一个环境即可