在使用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


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐