我想自动化一个进程,在TFS上成功构建之后调用该进程。该过程将RDP发送到测试服务器,然后调用该服务器上的C#应用程序,并重置该服务器上的IIS。每个步骤都将返回结果,因此无论是否调用下一步都是基于上一步骤。
实施它有一些障碍。以下是我想知道的可能性以及如何编码。
1)通过TFS上的构建调用流程
Build定义中有一个选项可以调用自动测试。我假设可以通过将其作为测试来调用该过程。
2) RDP到远程服务器
我找到了下面的链接,这可能是一个解决方案
Process rdcProcess = new Process();
rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\cmdkey.exe");
rdcProcess.StartInfo.Arguments = "/generic:TERMSRV/192.168.0.217 /user:" + "username" + " /pass:" + "password";
rdcProcess.Start();
rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\mstsc.exe");
rdcProcess.StartInfo.Arguments = "/v " + "192.168.0.217"; // ip or name of computer to connect
rdcProcess.Start();
Run mstsc.exe with specified username and password
Automating remote desktop connection
3) IISReset
我认为它应该只是在RDP之后调用“IISRESET
”,但问题是,如何限制运行IISRESET的结果。
可能适合的工具是:
1)Powershell - 我对Powershell了解不多,但我愿意在必要时学习
2)C#
我的问题是如何实现它,任何代码示例和想法都将非常感激。
答案 0 :(得分:0)
在大多数情况下,您不需要运行iisreset
如果要升级asp.net应用程序,请尝试将app_offline.htm放在应用程序文件夹中,它将停止应用程序并解锁应用程序文件
升级应用程序后,它将自动重启,或者您可以“触摸”web.config强制重启
答案 1 :(得分:0)
您可能最好使用Lab Build将脚本作为目标计算机环境的一部分运行。它可以对该机器运行任何PowerShell以及部署和执行应用程序....
答案 2 :(得分:0)
问题:如何捕获运行IISRESET的结果
我相信老式的方式,希望这就是你要找的东西
C:GT; IISRESET>> C:\ temp.log
您可以使用CMD或powershell
中的上述内容答案 3 :(得分:0)
过去我曾使用Psexec对远程服务器运行命令,而我们需要在该命令的结果上控制流量,我们只需将控制台传送到共享文件夹并检查我们的成功标志。 / p>
我不确定TFS是否可以这种方式运行命令,但是我们在hudson / jenkins上实现了它。
这不会直接回答你的问题,但它可能提供更好的前进方式
一个例子: psexec.exe \ remoteserver“iisreset> h:\ iisreset.log”
然后使用您的成功标志对iisreset.log运行grep或类似操作,作为运行下一步的条件。
答案 4 :(得分:0)
在这里查看我的答案,这有点相关:Answer
如果在构建服务器上运行TFSBuild服务的用户在测试服务器上拥有足够的权限,那么您可以使用psexec或powershell远程运行命令。阅读以下链接:
没有内置的活动/流程可以帮助您在TFS构建工作流程中的远程计算机上运行脚本。
第1步是确定如何在远程计算机上运行脚本,如上所述,您可以使用PSEXEC或Powershell(尽管在远程计算机上运行PowerShell可能会稍微复杂一些)。
Step2,编写实际脚本来完成工作,停止服务,安装MSI等。
步骤3,编辑当前的构建定义 - 创建新的自定义活动或在构建定义中使用InvokeProcess活动来调用您在步骤2中创建的脚本.InvokeProcess Activity