切换到下一步时,TFS启动的后台进程将被终止

时间:2017-07-06 12:31:22

标签: batch-file tfs

在TFS发布时,我在保持后台进程方面遇到了一些麻烦。 通常我使用一个启动java服务器的批处理(新窗口),只要我保持这个窗口打开就可以正常工作。

C:\Users\TFSService\mbs-iot-sdk\osgi\bin\vms\jdk\server.bat

为了使我的过程自动化,我将其包含在TFS中。在步骤中,我调用包含以下内容的批处理:

cd C:\Users\TFSService\mbs-iot-sdk\osgi\bin\vms\jdk // necessary to find the batch
start C:\Users\TFSService\mbs-iot-sdk\osgi\bin\vms\jdk\server.bat

在我的任务管理器中,我可以在后台任务中看到启动了java(没有打开新窗口),就像直接启动批处理时的行为一样。但几秒钟后,当TFS切换到下一步时,它会停止。 然后下一步继续但失败,因为它需要启动服务器。 在TFS中有没有特定的方法呢?

谢谢

亚历山大

2 个答案:

答案 0 :(得分:1)

建议从相对路径启动.bat文件,而不是直接使用cd来硬编码路径。

还建议您使用“运行批处理文件”任务而不是 Run Command Line task 来启动.bat文件。

根据您的描述,您似乎在构建管道中使用了运行命令行任务。然后在工作目录c:\Build_work\5\s下运行命令,在构建代理上运行命令cd到C:\Users\TFSService\mbs-iot-sdk\osgi\bin\vms\jdk\,找到server.bat,运行server.bat

首先检查.bat文件是否位于您在构建代理上指定的路径上。不确定bat文件是否必须在C:\Users\TFSService\mbs-iot-sdk\osgi\bin\vms\jdk\下运行,猜测你也是server.bat文件中路径的硬编码。建议你改变所有相对路径的路径,你可以在TFS中使用一些内置变量。

至于你在评论中的解决方法,似乎你想在TFS中链接构建。官方文档字面上说"还没有"并计划uservoice。但是,您可以使用一些解决方法,例如创建或使用其他自定义扩展(使用rest api)来调用另一个构建。详细方法请参考此问题中的 huserben 的答案:How to chain builds in TFS 2015?

请注意,您必须深入了解原始问题。只需添加一些相关信息,以备您感兴趣或需要。

答案 1 :(得分:0)

那么, 为了防止其他人遇到同样的问题,我找到了一个解决方法:

我希望混合不同的命令行步骤,其中一些启动Python脚本:

启动我的测试工具所需的服务器,我的测试工具只需一步,差异测试需要一步Python步骤

我意识到我可以将所有内容嵌入到Python脚本中。 它可以在一个单独的窗口(使用子进程)处理服务器启动过程,启动我的Python部分并为我的验证工具启动另一个进程。

我必须测试整个链,但至少,我解决了启动后台进程并将其从TFS中分离的问题