Если у вас много модулей и вы не хотите создавать конвейер для каждого модуля, вы можете рассмотреть обходной путь ниже.
Если модуль module1 находится в папке module1 вашего репо. Вы можете запустить git команду git diff --name-only HEAD HEAD~1
в задаче сценария, чтобы узнать, какой модуль обновляется. И установите папку модуля в переменную, используя оператор ##vso[task.setvariable]
. Затем вы можете настроить задачу сборки для сборки только измененного модуля. Пожалуйста, ознакомьтесь с приведенным ниже примером:
Проверьте документ, чтобы узнать больше о task.setvariable . Проверьте здесь, чтобы узнать больше о Условиях .
steps:
- powershell: |
#get the changed files
$a = git diff --name-only HEAD HEAD~1
#get the changed module folders
$folders = $a | foreach {$_.split("/")[0]}
#assign the folders to variable folderName
echo "##vso[task.setvariable variable=folderName]$folders"
#this build task will only be executed when module1 changed
- task: VSBuild@1
displayName: Build Module1
condition: contains(variables.folderName, 'module1')
#this build task will only be executed when module2 changed
- task: VSBuild@1
displayName: Build Module2
condition: contains(variables.fileName, 'module2')
Вышеупомянутый yaml является простым примером. Возможно, вам придется немного изменить сценарии задач PowerShell в соответствии с вашим проектом. Вы можете использовать только одну задачу сборки, если все модули используют одну и ту же конфигурацию сборки.