Проблема при запуске тестов в процессе сборки Team Services
Я установил сервер сборки в компании, в которой я работаю. Этот сервер сборки в интерактивном режиме работает с Visual Studio Team Services.
Здание прекрасно работает, как и публикация. Проблема, с которой я сталкиваюсь, заключается в возможности запустить "тест Dotnet" от имени другого пользователя.
Это необходимо, поскольку в настоящее время пользователь, под которым работает агент, является учетной записью службы. Он имеет доступ к IIS и имеет возможность перемещать файлы туда, где они должны быть. Но он не имеет доступа к базе данных.
Поскольку у нас есть несколько интеграционных тестов, которые мы используем, происходит ошибка при подключении к базе данных, поскольку она пытается подключиться как пользователь службы.
До сих пор я не нашел способа запустить "тест Dotnet" для другого пользователя, в частности, для доступа к базе данных.
Я попытался использовать задачу VSTS "Запуск Powershell на удаленных машинах", поскольку она позволяет вводить имя пользователя и пароль. Но, похоже, возникают проблемы при попытке удаленного подключения к себе (что, вероятно, понятно).
Я в растерянности. Я понятия не имею, как заставить это работать. За исключением предоставления пользователю сервиса возможности выполнять эти запросы в базе данных.
Любая помощь очень ценится!
2 ответа
SQL-аутентификация - лучший способ. Поэтому измените строку подключения, чтобы использовать аутентификацию SQL.
Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;
Статья Аутентификация: выберите режим аутентификации
Вы можете запустить процесс с желаемой идентификацией, передав соответствующие учетные данные, например
param($user, $pwd)
Start-Process $DOTNET_TEST_COMMAND -WorkingDirectory $DESIREDCURRENTWORKINGDIR -Credential (New-Object System.Management.Automation.PSCredential -ArgumentList @($user,(ConvertTo-SecureString -String $pwd -AsPlainText -Force)))
Мое мнение таково, что во время сборки должны выполняться только модульные тесты, поскольку вы можете иметь побочные эффекты на машине с общей сборкой, если будете выполнять более сложные тесты в качестве функциональных тестов. Вместо того, чтобы запускать функциональные тесты на сборочной машине, я бы предложил использовать задачу " Выполнить функциональные тесты" во время выпуска VSTS, поскольку это позволит вам:
- распределить тесты по пулу машин, на которых вы установили агент тестирования с помощью задачи " Развернуть агент тестирования");
- предоставить учетные данные идентификатора, для которого выполняются тесты, эта функциональность присутствует в задаче "из коробки", т. е. решить вашу проблему в корне;