Можно определить только один конвейер для развертывания измененного шаблона. Вам нужно добавить задачу скрипта, чтобы получить измененное имя файла шаблона в вашем конвейере.
Измененные файлы легко получить с помощью команд git git diff-tree --no-commit-id --name-only -r commitId
. Когда вы получите измененное имя файла, вам нужно присвоить его переменной , используя выражение ##vso[task.setvariable variable=VariableName]value
. Затем вы можете установить параметр csmFile, как этот csmFile: '**\$(fileName)'
в задаче AzureResourceGroupDeployment
Вы можете проверить ниже конвейер yaml, например:
- powershell: |
#get the changed template
$a = git diff-tree --no-commit-id --name-only -r $(Build.SourceVersion)
#assign the filename to a variable
echo "##vso[task.setvariable variable=fileName]$a"
- task: AzureResourceGroupDeployment@2
inputs:
....
templateLocation: 'Linked artifact'
csmFile: '**\$(fileName)'
Также легко определить несколько конвейеров, чтобы достичь только развертывание измененного шаблона. Вам нужно только добавить триггер paths в указанный файл шаблона c в каждом конвейере. Таким образом, измененный файл шаблона запускает только соответствующий ему конвейер.
trigger:
paths:
include:
- pathTo/template1.json
...
- task: AzureResourceGroupDeployment@2
inputs:
....
templateLocation: 'Linked artifact'
csmFile: '**\template1.json'
Надеюсь, что выше поможет!