Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant 詹金斯访问窗口服务器_Ant_Air_Window_Jenkins - Fatal编程技术网

Ant 詹金斯访问窗口服务器

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。工作正常,

我有以下问题:我在Jenkins CI中有一个ANT任务(显然)需要访问OSX的窗口服务器(它需要显示一个窗口)。在做了一些研究之后,似乎只有当前登录的用户和“root”用户(或SUDO)可以访问OSX窗口服务器。 ANT任务(AdobeADL)实际上是一个“运行”构建的任务,因此它必须弹出一个屏幕

我在一台运行OSX 10.7.something(狮子)、詹金斯1.487、蚂蚁1.8.4的macBook上

到目前为止,我所尝试的:

  • 首先,尝试使用“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接受密码身份验证,即使这样,仍然会出现相同的错误

虽然我学到了很多,但我认为我想要完成的并不值得我花2天时间在这个问题上。然而,我只是想让它起作用,不会接受失败,但:)

我的问题:你有没有解决过类似的问题,你是怎么解决的?有没有其他方法可以解决这个问题?有没有提到过一种方法,只要我做错了什么就行了


[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。