最终尝试运行一些NUnit
网络测试,但我发现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运行它们之间有什么区别。我在jenkins cannot open exe
的Google搜索中找不到任何远程相关信息。任何建议都表示赞赏。
编辑:
在练习Shiva的建议时,我尝试在运行Jenkins工作时观察正在运行的进程。如果我不在命令前面加start
,则calc.exe
会运行,但界面不会显示。一旦我杀了詹金斯的工作,计算器也会被杀死。如果我确实包括start
,那么一切都是相同的,除了jenkins工作自己完成并且计算器在工作结束后继续运行。这是新的日志:
由匿名用户启动 在工作区C:\ Program Files(x86)\ Jenkins \ jobs \ First Job \ workspace中构建 [workspace] $ cmd / c调用C:\ Windows \ TEMP \ hudson8285328547956378876.bat
C:\ Program Files(x86)\ Jenkins \ jobs \ First Job \ workspace> start 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 完成:成功
虽然这是不同的行为,但我不确定它是否会提供进一步的启示。为什么我不能与正在运行的进程交互?
答案 0 :(得分:3)
您无法通过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
答案 1 :(得分:0)
在运行jenkins作为服务时,它对我有用。
cmd.exe /C .\db\your_bat.bat
答案 2 :(得分:0)
在詹金斯通过服务运行NI TestStand时,我遇到了类似的问题。正如@cellardweller所说,在cmd提示符下运行typeof(YourClass)
创建了一个全新的jenkins安装,但它给了我一个很好的解决方案。如果有任何TestStand用户与Jenkins纠缠不清,请发布此帖子。 TestStand纯粹是带有GUI的Windows应用程序,人们非常希望Jenkins服务无法执行它。