Можно ли проверить, какой каталог / файл инициировал триггер, и установить соответствующие переменные?
Конечно, да. Но прямого пути нет, так как мы не предоставляем предварительно определенные переменные для хранения такого сообщения, поэтому для его получения требуется дополнительная сложная обработка.
# 1:
Хотя переменная не может напрямую хранить сообщение, например, какая папка и какой файл изменены, но вы можете получить его, отслеживая сообщение commit Build.SourceVersion
через api .
GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}/changes?api-version=5.1
Из тела ответа вы можете напрямую узнать его путь и файл:
Поскольку тело ответа JSON формат, вы можете использовать некоторую функцию JSON для анализа этого значения пути. См. Этот аналогичный сценарий в качестве ссылки.
Затем используйте сценарий powershell, чтобы установить эти значения в качестве переменной конвейера , чтобы следующие задания / задачи агента могли их использовать.
Кроме того, в вашем сценарии все это должно быть завершено до начала следующего задания. Итак, вы можете создать простое расширение с конвейером decorator . Определите все вышеперечисленные шаги в декораторе, чтобы его можно было завершить в предварительной работе каждого конвейера.
# 2
Думаю, вы должны чувствовать себя выше метод немного сложен. Поэтому я бы предпочел, чтобы вы могли использовать commit messge . Например, укажите project name
и file name
в сообщении фиксации, получите их, используя переменную Build.SourceVersionMessage
.
Затем используйте скрипт powershell (я упоминал выше), чтобы установить их как переменные.
Это удобнее, чем использовать api для разбора коммитов тела.
Надеюсь, один из них может помочь.