azure - 在 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。在所有其他发布作业完成后,是否有更好的方法来运行特定发布作业?
解决方案
只是一个建议:您可以使用多级管道,然后在 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"
请确保不要错过在用户设置中打开此预览功能的开关。
推荐阅读
- python - 在 plotly 中用下拉菜单绘制两个数据集
- javascript - 在 amp 页面中,是否可以包含在 window.onload 之后执行代码的 .js 文件?
- python - 在python中从单精度转换时将双精度设置为零
- macos - 如何允许通过终端发送 kystrokes?
- mysql - OpenJPA - 如何制定工作策略=针对 Oracle 的序列和策略=针对 MySql 的身份
- c# - 如何从我的 Ocelot api 网关中隐藏 JWT 密钥?
- google-apps-script - 部署为附加组件时,Apps 脚本引发权限异常
- python - 找不到错误
- tensorflow - 如何将 seq2seq 和注意力模型转换为可以部署在 Android Studio 中的 .tflite 格式?
- python - 根据第 3 列在列中设置具有共同值的行的日期