2017-01-05 34 views
0

我在我工作的公司中设置了构建服务器。 该构建服务器与Visual Studio Team Services交互工作。运行测试作为Team Services构建过程的一部分时的问题

建筑工程很好,所以发布。我正在运行的问题是能够以不同的用户身份运行“dotnet测试”。

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

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

到目前为止,我还没有找到一种方法来运行“dotnet测试”作为不同的用户,特别是有权访问查询数据库的用户。

我试过使用VSTS任务“在远程机器上运行PowerShell”,因为它允许我提供用户名和密码。但它似乎有试图远程连接到自己的问题(这可能是可以理解的)。

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

任何帮助,非常感谢!

回答

3

SQL身份验证是更好的方法。因此请更改connectionstring以使用SQL身份验证。

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

验证物品:Choose an Authentication Mode

+0

如果SQL验证可能,这确实是最好的方法。 –

+0

看起来我可能需要在我的构建服务器上做用户机密。 http://asp.net-hacker.rocks/2016/07/11/user-secrets-in-aspnetcore.html – kyurthich

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 task);
  • 提供测试所运行身份的凭证,此功能在任务中即时显示,即解决您的问题;
+0

的运行功能测试的想法真的是一个伟大的。我希望我可以将这两个标记为答案。他们对我的问题至关重要。 – kyurthich

相关问题