在我们的构建服务器上,我们有一个正在运行的进程,尤其是运行集成测试所需的运行进程,以访问数据库。TFS构建vNext - 成功构建后启动过程
这段软件可以在我们的存储库中进行更改,因此我创建了一个构建变更的CI构建。然后我想要做的是在成功构建之后用新的编译版本重新启动该过程,但是这部分我似乎无法工作。
我没有问题杀死正在运行的进程,并将结果部署到构建服务器上的特定位置,但似乎无论我尝试什么,只要正在运行的构建结束,我产生的进程就会被终止。
我曾尝试以下:
使用PowerShell
Start-Process <path to file>
随着CMD
与 '加利福尼亚' 作为工具和以下参数:
<path to file>
start <path to file>
/c start <path to file>
cmd <path to file>
cmd start <path to file>
cmd /c start <path to file>
我也试着简单地提供.exe路径作为工具名称,没有参数,也没有运气。
它的工作效果如何?
那么,对于大多数上述方法,额外的步骤与PS命令Get-Process <exe name>*
我得到了进程正在运行的结果。在停止该过程的步骤之后,同一步骤没有产生任何结果,因此可以启动新的更新过程。所以我认为它是有效的,vNext构建只是在构建结束后全部杀死它。
其他解决方案
我有2个解决方案留下了我能想到的应该工作,但是这两种解决方案都是我喜欢太复杂了,在我介绍相当复杂的构建过程,然后可能会出错,但这里有:
- 将生成服务器设置为部署的有效目标。然后我猜测我可以使用“目标机器上的PowerShell”步骤,即使我自己瞄准了它。我会假设它会作为独立的进程。这需要各种配置才能完成,并且需要为该任务编写远程PowerShell脚本。
- 编写一个可调用的小窗口服务,例如, REST,然后可以启动该进程,以便新的Windows服务成为拥有的线程。 - 这只是引入了一个新层,也可能需要更新。这也许可以手动更新而不是自动更新。
同样,我宁愿不使用2种解决方案中的任何一种,如果存在更好的解决方案。 :)
它是有道理的,但它也会使很多意义能够绕过它。 :) - 进程有一个通知图标,在上下文菜单中有许多调试工具,我们也需要访问该工具,因此将其作为服务运行对于此特定情况是不合适的。 :( –