Функции Microsoft DevOps и Azure: внедрение рекурсивных обновлений - PullRequest
0 голосов
/ 04 октября 2018

У меня есть задача реализовать функцию Azure, которая запускается через HTTP-Webhook, определенный в Microsoft DevOps (VSTS).

Идея заключается в следующем:

  • У нас есть структура backlog (скажем, Epic> Feature> User Story> Task)
  • Если я установлю состояние любого из этих элементов на «Готово», все базовые элементы также должны измениться на «Готово»

Что я сделал до сих пор

  • Я включил веб-крючок в DevOps, который запускается при обновлении любого рабочего элемента и отправляет этот элемент как JSON в функцию Azure.
  • Я написал функцию Azure, которая вызывается HTTP-запросить и получить URL-адрес элемента, который вызвал запрос
    • Затем функция получает все элементы, являющиеся дочерними по отношению к первому рабочему элементу
    • Функция исправляет все найденные дочерние элементы с состояниемпервый элемент
    • Все прямые дети обновляются в DevOps

Что мне нужно
Я пытаюсь выяснитьвозможность включить рекурсивное обновление.Следует обновлять не только прямых детей, но и всех их детей (если они есть) и так далее.Я подумал о следующих способах достижения этой цели и нуждался в вашем руководстве:

  • Получить все прямые дочерние элементы как JSON, а затем отправить HTTP-запрос к той же функции, передав все дочерние элементы

  • вызовите функцию внутри функции (даже не знаю, работает ли это) и передайте дочерние элементы как JSON

  • найдите способ обработки всехлогика в этой единственной функции (тупое вложение foreach для обеспечения обработки всех уровней иерархии невыполненных заказов)

Если нужны какие-либо фрагменты кода, просто скажите мне, и я предоставлю требуемые части (верно)теперь я совершенно не уверен, какую часть своего кода я должен опубликовать, и это было бы полезно)

1 Ответ

0 голосов
/ 05 октября 2018

Из вашего списка подходов:

  • Получить все прямые дочерние элементы как JSON, а затем отправить HTTP-запрос к той же функции, передавая все дочерние элементы
    [Пожалуйста, посмотрите Разветвление / Развертывание сценариев в функциях Durable .Это достигнет того, что вы ищете]

  • вызовите функцию внутри функции (даже не знаю, работает ли это) и передадите дочерние элементы как JSON
    [Это нерекомендуемые.Пожалуйста, смотрите здесь для лучших практик]

  • найти способ обрабатывать всю логику в этой единственной функции (тупой
    foreach-вложение, чтобы гарантировать все отставание-уровни иерархии обрабатываются) [То же самое здесь.Это не рекомендуется.Как правило, рекомендуется избегать длительных функций]

...