如何基于构建管道的路径过滤器触发DevOps发布管道

时间:2019-12-27 15:00:52

标签: azure-devops azure-pipelines

我有一个包含3个功能的Azure Function应用程序:

  • FunctionApp
    • FunctionA
    • FunctionB
    • FunctionC

我有一个DevOps管道,该管道配置为每当FunctionApp的任何内容更改时都构建该功能应用程序。

我现在想建立一个释放管道,以调用更新的任何函数。例如,如果在我的拉取请求中仅修改了FunctionA,那么我只想调用FunctionA。

如何使用DevOps管道执行此操作?

1 个答案:

答案 0 :(得分:-1)

我不想说“不可能”,但是您要的是在不可能的情况下很难解决。

如果不构建应用程序代码的完整依赖关系图并将其绑定到已更改的源文件,则无法确定哪个函数已更改。这是一个示例:

比方说,功能A和功能B依赖于库C。您更新库C中的代码。这意味着从功能的角度来看,功能A和功能B均已更改。您如何在构建时确定这一点?

当您开始不仅考虑构建而且考虑部署时,它变得更加棘手-因为您确实会在部署之后而不是构建后调用该功能。这是一个场景:函数A和函数B都发生了变化,但是出了点问题,部署仅部分成功,只有函数A被调用。现在,您再次运行部署。既然A已经运行,怎么知道只调用功能B?

关于功能的实际用途您什么都没有说,但我怀疑更好的解决方案是确保您的功能是幂等的并且可以安全地运行多次。如果这样做,那么整个问题的前提就没有意义了,您可以每次部署并调用所有功能。