如何让YAML模板作业依赖DeployApi部署作业?
关于Azure Pipelines YAML部署作业依赖的问题解答
部署作业支持dependsOn吗?
当然支持。deployment类型的作业本质上是Azure Pipelines中作业的一种特殊类型,和普通job遵循相同的依赖规则,完全可以通过dependsOn直接引用部署作业的名称来建立依赖关系。
你的现有配置方向是对的,只需要确保other-template.yml正确接收并应用dependsOn参数。举个实际的模板实现例子:
# other/other-template.yml parameters: dependsOn: [] jobs: - job: OtherJob dependsOn: ${{ parameters.dependsOn }} steps: # 这里编写你的作业执行步骤
配置完成后,OtherJob就会严格等待DeployApi部署作业执行完成后才启动。
如何让一个作业等待10个并行发布模板全部完成?
如果有10个并行的部署作业(每个对应一个发布模板),要让目标作业等待所有并行作业结束,只需要把这10个部署作业的名称全部列进dependsOn数组里即可。
举个完整的配置示例:
# release.yml stages: - stage: 'deploy_dev' displayName: Deploy to dev environment dependsOn: [] jobs: # 10个并行部署模板实例 - template: templates/deploy-service.yml parameters: deploymentJobName: DeployUserService environment: dev - template: templates/deploy-service.yml parameters: deploymentJobName: DeployOrderService environment: dev # ... 重复添加到第10个服务的部署模板 # 等待所有部署完成的收尾作业 - template: templates/post-deploy-check.yml parameters: dependsOn: [ 'DeployUserService', 'DeployOrderService', # 这里补上剩下8个部署作业的名称 ]
对应的部署模板要能接收并设置作业名称:
# templates/deploy-service.yml parameters: deploymentJobName: '' environment: '' jobs: - deployment: ${{ parameters.deploymentJobName }} environment: ${{ parameters.environment }} strategy: runOnce: deploy: steps: # 编写具体部署步骤
这样收尾作业会在所有10个并行部署作业都成功完成后才开始执行。
内容的提问来源于stack exchange,提问作者SamNewton
相关产品推荐
相关产品推荐

