Azure devops 指定管道和依赖项的顺序
老实说,我很难掌握这一点。 目前,我的实验室项目如下: PR to master->触发预构建管道作为合并代码的条件-> 只有在“我的基础结构”文件夹中发生任何更改时,才会运行“合并”基础结构管道 在合并时,我想运行部署管道将我的web应用部署到AzureAzure devops 指定管道和依赖项的顺序,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,老实说,我很难掌握这一点。 目前,我的实验室项目如下: PR to master->触发预构建管道作为合并代码的条件-> 只有在“我的基础结构”文件夹中发生任何更改时,才会运行“合并”基础结构管道 在合并时,我想运行部署管道将我的web应用部署到Azure 有问题的管道做了它们应该做的事情,即 预构建构建、发布工件、运行单元测试、验证ARM模板 Infra pipe为我的web应用部署必要的Infra,如资源组、应用程序计划、应用程序服务、密钥库 部署管道下载预部署中生成的工件,并部署到后台插
有问题的管道做了它们应该做的事情,即 预构建构建、发布工件、运行单元测试、验证ARM模板 Infra pipe为我的web应用部署必要的Infra,如资源组、应用程序计划、应用程序服务、密钥库 部署管道下载预部署中生成的工件,并部署到后台插槽,然后将其交换到生产插槽
我似乎无法开始工作的是通过依赖项的管道链接,如果主控中的infra和web app代码都发生了更改,我希望infra管道先运行,只有成功后才运行deploy管道 如果我只合并应用程序代码,我希望只运行部署管道,不管infra管道是否运行 如果我只合并infra代码,我希望只运行infra管道 如果我合并应用程序和infra代码,我希望infra和deploy管道都能按特定顺序运行 我觉得这应该不是很难做到,但我花了太多时间试图解决这个问题,但没有结果,有人能帮忙吗?:)
编辑: 嘿,抱歉@HughLin MSFT一直试图解决这个问题,因为我们试图避免左右运行脚本。:) 我看到您在即将发布的版本中已经计划好构建队列,所以现在我认为我们可能不得不等待 如果要合并部署和infra管道,我可以使用:
trigger:
branches:
include:
- master
paths:
include:
- Infrastructure/*
在舞台级别,以某种方式跳过某个舞台?
看到多篇文章提到“如果跳过,则继续”,但找不到有关如何实际跳过某个阶段的任何信息。对于第一种和第二种情况,您只需在触发器中设置
路径筛选器,管道仅在指定路径的文件更改时触发。请参阅
对于第三种情况,您可以尝试在infra管道
中添加两个代理作业,将触发Azure DevOps管道
任务添加到第二个代理作业以触发部署管道
,然后仅在作业2的运行此作业
下拉框中设置。此外,您需要在触发Azure DevOps管道
任务之前添加powershell任务,并使用脚本检测是否存在应用程序代码,如果存在则运行job2,如果没有则取消job2
更新:
首先,您可以创建一个新管道并创建一个变量:changedcode
使用RESTAPI获取提交,然后使用RESTAPI获取更改的代码文件夹
将更改的代码文件夹名称作为值分配给changedcode
变量
为代理作业设置。在Infra
作业中,如果changedcode
变量值为Infra
,则运行Infra
作业。在Infra
作业中,使用rest api或Trigger Azure DevOps管道
任务触发Infra
管道。Deploy
job也是如此,唯一的区别是自定义条件表达式
以下是yaml中的示例结构:
jobs:
variables:
changedcode: ""
- job:
steps:
- powershell: |
#Get the changed code folder with rest api
- job: Infra
condition: containsValue($(changedcode), "Infra"))
- powershell: |
#queue Infra pipeline with rest api or Trigger Azure DevOps Pipeline task
- job: Deploy
condition: (containsValue($(changedcode), "deploy")),and ....
- powershell: |
#queue Deploy pipeline with rest api or Trigger Azure DevOps Pipeline task
好几天没有收到您的回复,请您分享您关于此问题的最新信息好吗?如果您有任何问题,请随时在此处分享。@HughLin MSFT在我的问题中添加了:)在阶段级别,并以某种方式跳过一个阶段?
对于此问题,当您运行管道时,您可以选择。@HughLin MSFT我想这在代码中还不可用?我的意思是,就像为PR添加了一个用于构建验证的我在更新中给出了一个粗略的想法,请查看。此外,我不清楚构建策略与此问题有何关系。