我在我工作的公司设置了构建服务器。 此构建服务器与Visual Studio Team Services交互使用。
建筑效果很好,发布也很好。我遇到的问题是运行" dotnet test"作为不同的用户。
这是必需的,因为当前运行代理的用户是服务帐户。它可以访问IIS,并能够将文件移动到需要的位置。但它无法访问数据库。
由于我们使用了一些集成测试,因此在连接到数据库时会出错,因为它尝试以服务用户身份进行连接。
到目前为止,我还没有找到一种方法来运行" dotnet test"作为不同的用户,特别是有权查询数据库的用户。
我尝试使用VSTS任务"在远程机器上运行Powershell"因为它允许我提供用户名和密码。但似乎有问题试图远程连接到自己(这可能是可以理解的)。
我不知所措。我不知道如何让它工作。除了为服务用户提供在数据库上运行这些查询的能力。
非常感谢任何帮助!
答案 0 :(得分:3)
SQL身份验证是更好的方法。因此,更改连接字符串以使用SQL身份验证。
Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;
答案 1 :(得分: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任务,而不是在构建计算机上运行功能测试,因为它允许您: