内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

jenkins[windows_slave cygwin]执行GUI程序长时间卡顿(fixed)

2018-10-08 16:04 出处:清屏网 人气: 评论(0

分享一个issue,终于在不懈的努力下,解决了(耽误了好长时间)...

现象

target:将老的jenkins上的job迁移到新的机器上,并采用pipeline的方式进行改写。该job涉及在windows平台install exe程序,需要搭建一个windows slave。通过将生成打包的程序安装到windows上并启动服务,为接下来automation case提供agent服务。

process:在搭建windows slave 的时候,发现无法通过pipeline方式调用windows上的exe程序,一直处于卡顿状态。远程登录到windows机器上发现程序的process已经在处理,但是一直处于running阶段,结束不了。

排查

1. windows slave如何搭建(不在本文讨论的范围内),我们采用的是cygwin的方式( https://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#EMBSC340 ),这种方式的好处是我们可以在windows上跑shell命令,jenkins可以通过ssh的方式连接到windows上。排查下来,cygwin的service在新的windows上正常启动,jenkins也能正常的访问,并可以执行script,但是对于exe程序这种有gui的,出现了上述的情况。

网上资料比较少,只找到两篇: https://blog.csdn.net/Anlegor/article/details/24329237 和 https://blog.csdn.net/lb445720337/article/details/78969175 ,对一般问题的排查还是有用的。

2.查看任务管理器中安装该exe程序的process session,发现都是0,而远程登录进来同样的用户session 是2,进入误区,认为是因为session不一致导致没有权限执行。

3.参照网上经验指定windows slave上启动sshd服务的user,如下:

并将其设置为管理员,restart。服务正常开启,但是还是执行不了。并发现jenkins 认证出现问题,连不上该机器了,出现:

/bin/bash: Operation not permitted 这样的错误,网上查下:需要重新指定下user:

editrights -a SeAssignPrimaryTokenPrivilege -u cy_user (cy_user为服务启动用户)
editrights -a SeCreateTokenPrivilege -ucy_user
editrights -a SeTcbPrivilege -ucy_user 
editrights -a SeServiceLogonRight -ucy_user

重新指定好后,jenkins可以正常连接了,然后发现pipeline可以正常的执行了!!!带着疑惑,我又去翻看了下cygwin的安装文档:

文档中并没有强调一定要和jenkins连接用户区分开来,我这也算是第一个吃螃蟹的人了。。。

结论:设置cygwin提供服务的user必须和jenkins连接到slave的user分开,不能是同一个。否则在处理类似于GUI程序的时候会出现长时间的卡顿。不是同一个的话这样它会以系统管理员的方式去启动service然后执行exe,而不是以jenkin的角色(某个session)来进行。

分享给小伙伴们:
本文标签: GUIjenkinsfixed

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号