Jenkins slave远程运行windows exe无窗口问题解决方法
在使用jenkinsslave下发并执行exe的时候遇到一个很奇怪的问题,之前实验过程中能够正常执行的exe在实际部署的环境下运行后无法显示程序窗口,这样导致有界面行为的一些测试程序无法正常得到结果。 经过一系列排查,基本确认该问题和jenkins的权限控制有关,尝试安装一个新的帐号及权限设置插件role-strategy后,重新在slave机器上运行,exe窗口能正常显示且程
在使用jenkinsslave下发并执行exe的时候遇到一个很奇怪的问题,之前实验过程中能够正常执行的exe在实际部署的环境下运行后无法显示程序窗口,这样导致有界面行为的一些测试程序无法正常得到结果。
经过一系列排查,基本确认该问题和jenkins的权限控制有关,尝试安装一个新的帐号及权限设置插件role-strategy后,重新在slave机器上运行,exe窗口能正常显示且程序正常工作。
尝试不用role-strategy插件,使用jenkins默认的” ConfigureGlobal Security”设置,启用安全并设置访问控制,问题也能解决:
而重新在家里机器上和虚拟机上清空所有数据,然后不开启安全访问,竟然还是能够正常运行并显示exe窗口……,如此神奇。
补充:
继续追查发现,该问题并不是因为jenkins的权限导致的问题,而是因为系统服务是以system启动的,他运行在session0,而桌面及其他GUI程序则运行在session1,2,3...以上,如果想以jenkins的服务来运行GUI的windows exe,则需要有一个由服务启动一个中间进程来进行session和权限切换。
可参考:http://www.installsetupconfig.com/win32programming/windowsservicesapis5_7.html 和 http://msdn.microsoft.com/en-us/library/ms682429.aspx
但是上面太麻烦了,为了简单起见,我们可以使用另外一种方式,在windows计划任务中启动一个批处理并且设置成系统登陆启动,批处理中运行slave的启动,如
javaws http://192.168.1.8/computer/192.168.1.110/slave-agent.jnlp
更多推荐
所有评论(0)