Azure devops Azure Devops管道-在部署到下一个环境之前,等待E2E测试管道通过

Azure devops Azure Devops管道-在部署到下一个环境之前,等待E2E测试管道通过,azure-devops,azure-devops-pipelines,Azure Devops,Azure Devops Pipelines,我们的管道通常分为以下几个阶段: 构建(+单元测试) 部署到开发人员 部署测试 部署到生产环境中 此外,在测试和产品环境中,批准是定义的,因此,如果PR合并,则仅将其部署到开发人员,然后需要手动批准才能部署到测试等 我们有很多组件(API A、API B、一些后台工作程序等等),因为我们希望独立地管理和部署这些组件—所有这些组件都定义了自己的管道(它们看起来都非常相似—如上所述) 有时,一个PR影响多个部件,然后并行触发2个或3个或更多管道 我们还有一组E2E测试,用于验证所有组件是否能够正

我们的管道通常分为以下几个阶段:

  • 构建(+单元测试)
  • 部署到开发人员
  • 部署测试
  • 部署到生产环境中
此外,在测试和产品环境中,批准是定义的,因此,如果PR合并,则仅将其部署到开发人员,然后需要手动批准才能部署到测试等

我们有很多组件(API A、API B、一些后台工作程序等等),因为我们希望独立地管理和部署这些组件—所有这些组件都定义了自己的管道(它们看起来都非常相似—如上所述)

有时,一个PR影响多个部件,然后并行触发2个或3个或更多管道

我们还有一组E2E测试,用于验证所有组件是否能够正常工作

当单个PR被合并并影响多个组件时,我们真的不想多次触发这些E2E测试。我们只想在所有受影响组件的所有管道部署到特定环境时触发它。 因此,我们为这些E2E测试分离了管道

我们希望实现的流程是:

  • 公共关系被合并
  • 将触发组件A、B和C的管道
  • 组件A、B和C的管道已完成阶段:“部署到开发人员”,下一阶段:“部署到测试人员”处于“等待”状态
  • E2E测试的管道已启动
  • 组件A、B和C的管道将运行“部署到测试”阶段,前提是有人手动批准(我们现在就有此功能)并且E2E测试的管道已成功完成

您知道如何实现最后一个条件吗?

您需要在管道中编写一个自定义Powershell/Shell任务,该任务主要轮询更新,以检查外部E2E测试管道是否已完成,并在E2E测试完成时完成该过程

下面是另一个答案的链接,其中有一个如何实现这一点的示例:

然而,使用这种方法,如果E2E测试需要几个小时才能运行,您可能会遇到作业超时的问题。默认超时为:

  • 360分钟用于自托管作业
  • Microsoft托管作业60分钟
以下是有关超时的文档:


使用适当的dependsOn块将所有这些管道组合成单个多阶段/多作业管道。