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



我们有管道,通常有以下阶段:

  • Build (+ UnitTests)
  • 部署到Dev
  • 部署到测试
  • 部署到生产

另外-在Test和Prod环境中-批准是定义的-所以如果PR被合并,它只被部署到Dev,然后需要手动批准部署到Test,等等。

我们有很多组件(API A, API B,一些后台worker,等等),因为我们想要独立地管理和部署这些组件——它们都有自己定义的管道(它们看起来都很相似——如上所述)。

有时会发生一个PR影响多个组件,然后并行触发2或3或更多管道的情况。

我们还有一组端到端测试-验证所有组件是否可以很好地一起工作。

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

我们想要实现的流程是:

  • PR被合并
  • 组件A、B和C的管道被触发。
  • 组件A、B、C的管线已完成阶段:"部署到开发";下一阶段:"部署到测试"状态为"等待">
  • 端到端测试流水线已启动
  • 组件A、B和C的管道将运行阶段"部署到测试";只有当有人手动批准(我们现在有这个)和管道的E2E测试已经成功完成

你知道我们怎样才能达到最后一个条件吗?

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

下面是另一个答案的链接,这个答案有一个如何完成这个任务的例子:

  • 如何使Azure DevOps管道等待外部进程完成?

但是,使用此方法时,如果E2E测试需要运行几个小时,则可能会遇到作业超时的问题。默认超时为:

  • 360分钟自托管作业
  • 60分钟的微软托管作业

以下是关于超时的文档:

  • https://learn.microsoft.com/en-us/azure/devops/pipelines/process/phases?view=azure-devops&标签= yaml #超时

相关内容

  • 没有找到相关文章

最新更新