Сборка VSTS - выберите, какие модульные тесты будут выполняться в зависимости от того, какие файлы были изменены в запросе на извлечение. - PullRequest
0 голосов
/ 16 ноября 2018

Я хотел бы контролировать, какие модульные тесты выполняются в конвейере сборки VSTS на основе того, какие файлы были изменены в PR, который запустил конвейер.

Есть ли способ определить, какие файлы были изменены в режиме извлечениязапросить во время сборки VSTS, запущенной для этого PR, а затем выбрать, какие тесты запустить на основе этой информации?

1 Ответ

0 голосов
/ 16 ноября 2018

Да, это возможно:

Ручной подход

Одним из подходов к этому является создание в конвейере пользовательской задачи Powershell, которая устанавливает переменную в зависимости от того, был ли определенный файл изменен при последнем коммите. Так что у вас может быть такой конвейер:

Example build pipeline

Ваш шаг «Установить критерии для файлов при последнем коммите» будет содержать встроенный сценарий powershell для установки переменной Build в зависимости от того, была ли определенная строка в списке файлов из последнего коммита, где «YOURFILE.cs» является файл, который вас интересует (вы можете заменить его любой логикой):

$ChangedFiles = & git show --pretty="" --name-only

if ($ChangedFiles -like '*YOURFILE.cs*') {
    Write-Output ("##vso[task.setvariable variable=RunTests;]true")
 }
else{
     Write-Output ("##vso[task.setvariable variable=RunTests;]false")
}

Затем на шаге «Выполнить тесты» вы можете установить параметр условного управления, который будет смотреть на эту переменную, чтобы решить, следует ли запускать этот набор тестов:

Custom control option

Анализ влияния теста Visual Studio

Если вы используете задачу Visual Studio Test для запуска ваших тестов, есть также встроенная опция, позволяющая запускать только тесты, на которые влияет сборка, с помощью функции Test Impact Analysis.

Impacted tests

Это может быть полезно для вас, но не дает прямого ответа на ваш конкретный вопрос и имеет более широкий охват. Дополнительная информация доступна на страницах документации по Azure Devops

...