最终尝试运行某些NUnit
Web测试,但我发现Jenkin的测试将在运行批处理命令path\to\nunit.exe
之前停止。因此,我只是尝试运行一个包含单个构建步骤的新作业:执行Windows批处理命令C:\Windows\system32\calc.exe
。这是我的控制台输出:
由匿名用户启动
在工作空间C:\ Program Files(x86)\ Jenkins \ jobs \ [我的工作] \ workspace中构建 [工作区] $ cmd / c调用C:\ Windows \ TEMP \ hudson8921839713501090632.bat
C:\ Program Files(x86)\ Jenkins \ jobs \ [我的工作] \工作区> C:\ Windows \ system32 \ calc.exe
并且它一直挂着,直到我断掉为止。不用说,此命令在命令提示符下运行良好。另外,未打开新进程的命令在Jenkins
中可以正常运行(例如,dir)。我不知道在cmd.exe中运行批处理命令与通过Jenkins运行它们之间有什么区别。我找不到Google搜索为jenkins cannot open exe
的任何与远程相关的信息。任何建议表示赞赏。
编辑:
[在实践Shiva的建议时,我在执行Jenkins工作时尝试观察正在运行的过程。如果我没有在命令前加start
,则calc.exe
会运行,但界面不会显示。一旦我杀死詹金斯的工作,计算器也将被杀死。如果我确实包含start
,则除了詹金斯作业自己完成并且作业结束后计算器继续运行之外,其他所有内容都相同。这是新的日志:
由匿名用户启动 在工作空间C:\ Program Files(x86)\ Jenkins \ jobs \ First Job \ workspace中构建 [工作区] $ cmd / c调用C:\ Windows \ TEMP \ hudson8285328547956378876.bat
C:\ Program Files(x86)\ Jenkins \ jobs \ First Job \ workspace> 开始 C:\ Windows \ system32 \ calc.exe
C:\ Program Files(x86)\ Jenkins \ jobs \ First Job \ workspace>退出0 处理泄漏的文件描述符。有关更多信息,请参见http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build。 已完成:成功
尽管这是不同的行为,但我不确定它是否会提供进一步的启示。为什么我不能与正在运行的进程进行交互?
您无法通过作为服务运行的Jenkins
打开Windows进程。您必须通过控制台命令Jenkins
运行java -jar "C:\Program Files (x86)\Jenkins\jenkins.war" --httpPort=[your desired available port number]
。然后,当Jenkins在您的控制台中运行时,您应该能够在localhost:[您的端口号]的浏览器中对其进行访问。现在,您可以继续打开计算器以及所需的其他可执行文件。
https://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins
在运行詹金斯服务时为我工作。
cmd.exe /C .\db\your_bat.bat
我在詹金斯通过服务运行NI TestStand时遇到了类似的问题。正如@cellardweller所说,在cmd提示符下运行jenkins.war
会创建一个全新的jenkins安装,但它给了我一个很好的解决方案。如果有任何TestStand用户与Jenkins纠缠不清,请发布此帖子。 TestStand纯粹是带有GUI的Windows应用程序,非常期望Jenkins服务无法执行它。