Microsoft DevOps和Azure功能:实施递归更新

时间:2018-10-04 06:55:33

标签: azure azure-devops azure-functions webhooks devops

我有一个任务来实现由Microsoft DevOps(VSTS)中定义的HTTP-Webhook触发的Azure功能。

想法如下:

  • 我们有一个积压结构(比方说:史诗>功能>用户故事>任务)
  • 如果我将其中任何一项的状态设置为“完成”,则所有基础项也应更改为“完成”

我到目前为止所做的事情

  • 我已在DevOps中启用了一个Webhook,该Webhook会在更新任何工作项时触发并将此项目作为JSON发送到Azure函数
  • 我已经编写了由HTTP请求调用的Azure函数,并获取了触发请求的项目的URL
    • 该函数然后获取所有属于第一个工作项的子项
    • 该函数使用第一项的状态修补所有找到的子项
    • 所有直接子代都在DevOps上更新

我需要什么
我正在尝试找出启用递归更新的选项。不仅应该更新直系子级,还应该更新所有子级(如果有的话)等等。 我考虑了以下方法来完成此操作,并需要您的指导:

  • 获取所有直接子级作为JSON,然后将所有子项的HTTPp请求发送到同一函数

  • 调用函数中的函数(甚至不知道这是否可行)并将子级作为JSON传递

  • 找到一种方法来处理此单个函数中的所有逻辑(愚蠢的foreach嵌套以确保处理所有积压层次结构级别)

如果需要任何代码片段,请告诉我,我会提供所需的部分(现在我不确定我应该发布代码的哪一部分,这会有所帮助)

1 个答案:

答案 0 :(得分:0)

从您的方法列表中:

  • 将所有直接子级都获取为JSON,然后将HTTP请求发送到 相同的功能,传递所有子项的
    [请参阅Fan-Out/Fan-In scenarios in Durable functions。这将实现您想要的]]

  • 在函数内调用函数(甚至不知道这是否有效) 并将子级作为JSON传递
    [不建议这样做。请参阅here了解最佳做法]

  • 找到了一种方法来处理此单个函数中的所有逻辑(哑巴
    foreach嵌套以确保已处理所有积压层次结构级别) [同样在这里。不建议这样做。通常,最佳做法是避免长时间运行功能]