Ant 詹金斯访问窗口服务器
我有以下问题:我在Jenkins CI中有一个ANT任务(显然)需要访问OSX的窗口服务器(它需要显示一个窗口)。在做了一些研究之后,似乎只有当前登录的用户和“root”用户(或SUDO)可以访问OSX窗口服务器。 ANT任务(AdobeADL)实际上是一个“运行”构建的任务,因此它必须弹出一个屏幕 我在一台运行OSX 10.7.something(狮子)、詹金斯1.487、蚂蚁1.8.4的macBook上 到目前为止,我所尝试的:Ant 詹金斯访问窗口服务器,ant,air,window,jenkins,Ant,Air,Window,Jenkins,我有以下问题:我在Jenkins CI中有一个ANT任务(显然)需要访问OSX的窗口服务器(它需要显示一个窗口)。在做了一些研究之后,似乎只有当前登录的用户和“root”用户(或SUDO)可以访问OSX窗口服务器。 ANT任务(AdobeADL)实际上是一个“运行”构建的任务,因此它必须弹出一个屏幕 我在一台运行OSX 10.7.something(狮子)、詹金斯1.487、蚂蚁1.8.4的macBook上 到目前为止,我所尝试的: 首先,尝试使用“barebone”任务调用ADL。工作正常,
- 首先,尝试使用“barebone”
任务调用ADL。工作正常,但出现错误,这意味着作为守护进程运行的Jenkins(使用homedir/Users/shared/Jenkins/Home)无法访问OSX的窗口服务器 - 通过更改Jenkins launchd.conf文件中的用户名、组名、Jenkins HOME,以自己的身份运行Jenkins: 这给我带来了很多错误/麻烦,我试图通过与詹金斯CI的创建者沟通来解决这些问题,但不幸的是没有成功
- 试着让Ant运行一个
任务(运行一个shell脚本),在这个任务中,我尝试使用这种偷偷的方式将密码传递给stdinput:echo |sudo-S ,这非常糟糕,但由于我在本地运行Jenkins(无法从局域网外部访问),这是np - 试图让Ant运行
任务,使用“重定向器”作为输入字符串“我的密码”。也非常糟糕,但是的,我只是想让它工作。但事实并非如此 - 尝试了Jenkins SSH插件:不起作用。然而,我可以使用终端将SSH连接到我自己的本地主机,问题是,我不知道Jenkins SSH试图做什么(我怎么知道呢?),所以我不知道为什么它不起作用
- 试图让Ant运行一个SSHEXEC任务(几个小时后,它终于工作了。Ant for mac被屏蔽了,可选的.jar任务没有正确命名等等),但我得到了一个“com.jcraft.jsch.JSchException:Auth fail”,我在谷歌上搜索了这个问题,似乎无法解决。唯一适用的解决方案是让sshd接受密码身份验证,即使这样,仍然会出现相同的错误
[edit]我决定使用Jenkins单机版应用程序,因为我认为(对我来说)这是一个总体上更好的解决方案,因为我的笔记本电脑不是构建服务器。此外,Jenkins应用程序可以在启动时启动,因此它实际上充当本地服务器。只是一个快速猜测:如果您不想要脚本的交互性,并且脚本可以不使用它,您可以尝试在java命令行上设置headless模式:
-Djava.awt.headless=true
我决定使用Jenkins单机版应用程序,因为我认为(对我来说)这是一个更好的解决方案,因为我的笔记本电脑不是(无头)构建服务器。此外,Jenkins应用程序可以在启动时启动,因此它也可以充当服务器。在Ant之外运行此任务怎么样。使用Jenkins,您可以启动shell进程和脚本。您可以设置
/etc/sudoers
以允许Jenkins用户以用户WindowsServer
或root
身份执行命令,而无需密码。这有帮助吗?@DavidW。这肯定是一个解决方案,如果我没有选择使用Jenkins单机版应用程序,我会很想知道我将如何做这样的事情!但是,詹金斯可以做到这一点。转到作业的配置屏幕。在invokeant步骤下的Build部分下,单击addbuildstep按钮。选择“执行Shell”。现在您可以直接在Jenkins.hmm中键入sudo
命令,这似乎非常明显。不知道为什么我没有早一点尝试!谢谢你的提示。谢谢,但是我准备在ANT中的某个任务的其他地方设置headless属性,这将awt.headless设置为true。