我有一个跨多个部署组的复杂发行版,并且我计划使用第三方vsts-git-release-tag扩展名来标记发行版。理想情况下,整个版本(所有作业)将首先成功,然后再标记存储库。
因此,我正在尝试找出实现此目标的最佳方法。如果这是构建管道而不是部署管道,那么很明显,我可以按如下所述安排它们using 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
但是,似乎in this document中指定的发布管道中(至少目前)没有等效的功能。
注意
目前仅在构建管道中支持并行运行多个作业。在发布管道中尚不支持。
尽管没有特别提到dependsOn
功能,但似乎没有一种在发布管道中使用它的方法(如果我错了,请纠正我)。
我意识到我可能可以创建一个包含一个作业和任务的单独阶段来创建Git标签,但这感觉就像是一个hack。 在所有其他发布作业完成之后,是否有更好的方法来运行特定的发布作业?
答案 0 :(得分:1)
查看已指定的示例,您无需为每个步骤创建不同的作业。每个任务都可以添加到一个作业中。
jobs:
- job:
steps:
- script: echo hello from Deployment Group 1
- script: echo hello from Deployment Group 2
- script: echo this is where I would tag the Repo
如果需要,还可以在代码中删除Jobs> Job。
我面临着一个类似的问题,我的工作没有按照预定的顺序进行。另外,我还参考了其他工作模板,给我的印象是每个模板都必须放在一个新工作中。后来,我设法将工作分解成任务。
注意事项:
答案 1 :(得分:0)
创建测试项目并将其添加到发布管道的多个作业中,然后连续运行几次后,看来作业的顺序是确定的。也就是说,它们似乎总是按照实际出现在门户中的顺序运行。
我进行了几次Google搜索,但似乎没有任何地方记录这种行为。因此,我不确定是否可以保证。但这对我的情况可能会起作用。
如果有任何官方消息确认该工作单得到保证,请发表评论。
答案 2 :(得分:0)
只是一个建议:您可以使用m ultistage pipelines,然后在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"
请确保不要错过在用户设置中启用此预览功能的机会。