0

我在我工作的公司设置了一个构建服务器。此构建服务器与 Visual Studio Team Services 交互地工作。

构建效果很好,发布也是如此。我遇到的问题是能够以不同的用户身份运行“dotnet test”。

这是必需的,因为当前运行代理的用户是服务帐户。它可以访问 IIS 并能够将文件移动到需要的位置。但它无权访问数据库。

由于我们使用了一些集成测试,因此在连接到数据库时会出错,因为它正在尝试以服务用户身份连接。

到目前为止,我还没有找到一种以不同用户身份运行“dotnet test”的方法,特别是有权查询数据库的用户。

我尝试使用 VSTS 任务“在远程机器上运行 Powershell”,因为它可以让我提供用户名和密码。但它似乎在尝试远程连接到自身时遇到了问题(这可能是可以理解的)。

我很茫然。我不知道如何让它工作。除了让服务用户能够在数据库上运行这些查询。

任何帮助是极大的赞赏!

4

2 回答 2

3

SQL 身份验证是更好的方法。所以更改连接字符串以使用 SQL 身份验证。

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;

身份验证文章:选择身份验证模式

于 2017-01-06T07:27:54.203 回答
1

您可以通过传递适当的凭据来启动具有所需身份的进程,例如

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 发布期间使用Run Functional Tests任务,而不是在构建机器上运行功能测试,因为它允许您:

  • 通过Deploy Test Agent 任务在安装了测试代理的机器池上分发测试);
  • 提供运行测试的身份凭据,此功能在任务中开箱即用,即从根本上解决您的问题;
于 2017-01-05T21:26:07.153 回答