首页 > 解决方案 > 在 Azure DevOps 发布管道中控制作业顺序

问题描述

我有一个跨越多个部署组的复杂版本,我计划使用第 3 方vsts-git-release-tag扩展来标记该版本。理想情况下,整个发布(所有作业)在标记存储库之前首先会成功。

因此,我正在尝试找出实现这一目标的最佳方法。如果这是一个构建管道而不是部署管道,很明显我可以使用 来dependsOn安排它们,如下所示。

jobs:
- job: Deployment_Group_1
  steps:
  - script: echo hello from Deployment Group 1
- job: Deployment_Group_2
  steps:
  - script: echo hello from Deployment Group 2
- job: Tag_Repo
  steps:
  - script: echo this is where I would tag the Repo
  dependsOn:
  - Deployment_Group_1
  - Deployment_Group_2

但是,在本文档中指定的发布管道中似乎没有等效的功能(至少目前是这样)。

笔记

目前仅在构建管道中支持并行运行多个作业。发布管道尚不支持它。

虽然它没有特别提到该dependsOn功能,但似乎没有办法在发布管道中使用它(如果我错了,请纠正我)。

我意识到我可能可以创建一个单独的阶段,其中包含一个作业和任务来创建 Git 标签,但这感觉就像一个 hack。在所有其他发布作业完成后,是否有更好的方法来运行特定发布作业?

标签: azureazure-devopsazure-pipelinesazure-pipelines-release-task

解决方案


只是一个建议:您可以使用多级管道,然后在 Azure Devops Ui 中也非常清楚地表示了这些管道。

阶段有工作,工作有步骤: 在此处输入图像描述

用于此的示例管道 yml:

trigger:
  batch: true
  branches:
    include:
      - "*"


resources:
  containers:
    - container: ubuntu
      image: ubuntu:18.04

stages:
  - stage: STAGE1
    jobs:
     - job: PrintInfoStage1Job1
       container: ubuntu
       steps:
          - script: |
              echo "THIS IS STAGE 1, JOB 1"
            displayName: "JOB 1"
     - job: PrintInfoStage1Job2
       dependsOn: PrintInfoStage1Job1
       container: ubuntu
       steps:
          - script: |
              echo "THIS IS STAGE 1, JOB 2"
            displayName: "JOB 2"

  - stage: STAGE2
    dependsOn: STAGE1
    jobs:
      - job: PrintInfoStage2Job1
        dependsOn: []
        container: ubuntu
        steps:
          - script: |
               echo "THIS IS THE STAGE 2, JOB 1"
            displayName: "JOB 1"

      - job: PrintInfoStage2Job2
        container: ubuntu
        dependsOn: []
        steps:
          - script: |
               echo "THIS IS THE STAGE 2, JOB 2"
            displayName: "JOB 2"

请确保不要错过在用户设置中打开此预览功能的开关。


推荐阅读