Проблема при запуске тестов в процессе сборки 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, поскольку это позволит вам:

  • распределить тесты по пулу машин, на которых вы установили агент тестирования с помощью задачи " Развернуть агент тестирования");
  • предоставить учетные данные идентификатора, для которого выполняются тесты, эта функциональность присутствует в задаче "из коробки", т. е. решить вашу проблему в корне;
Другие вопросы по тегам