2

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

我在运行 OSX 10.7.something (Lion)、Jenkins 1.487、Ant 1.8.4 的 MacBook 上。

到目前为止我已经尝试过:

  • 首先,尝试使用“准系统”<exec> 任务来调用 ADL。有效,但出现错误意味着 Jenkins 作为守护进程运行(使用 homedir /Users/shared/Jenkins/Home)无法访问 OSX 的 Window Server。

  • 以我自己的身份运行 Jenkins,通过更改 jenkins launchd.conf 文件中的 USER_NAME、GROUP_NAME、JENKINS_HOME:https ://wiki.jenkins-ci.org/display/JENKINS/Thanks+for+using+OSX+Installer 这提供了很多错误/麻烦,我试图通过与 Jenkins CI 的创建者的沟通来解决,但不幸的是无济于事。

  • 尝试让 Ant 运行一个 < exec > 任务(运行一个 shell 脚本),在该任务中,我尝试使用这种偷偷摸摸地将密码传递给 stdinput 的方式使用密码来 sudo:sudo -S < command > 这真的很糟糕,但是当我在本地运行 Jenkins(无法从我的 LAN 外部访问)时,它是 np.

  • 试图让 Ant 运行 < exec > 任务,使用“重定向器”和我的密码作为输入字符串。也很棒,但是是的,我只是想让它工作。它没有。

  • 尝试了 Jenkins SSH 插件:没有用。但是,我可以使用终端 SSH 到我自己的本地主机,事情是,我不知道 Jenkins SSH 试图做什么(我怎么能弄清楚呢?)所以我不知道为什么它不会工作。

  • 试图让 Ant 运行一个 SSHEXEC 任务(几个小时后,它终于工作了。Ant for mac 很糟糕,一些可选的 .jar 任务没有被正确重命名或其他东西),但我得到了一个“com.jcraft。 jsch.JSchException:身份验证失败”,我用谷歌搜索,似乎无法解决。唯一适用的解决方案是让 sshd 接受密码身份验证,这样做,仍然得到同样的错误。

我认为我想要完成的事情不值得我在这个问题上花费的 2 天时间,尽管我学到了很多东西。但是,我只是希望它起作用并且不会接受失败:)

我的问题:您是否必须解决类似的问题,您是如何解决的?有没有其他方法可以尝试解决这个问题?有没有提到的方法应该只是_WORK_而我做错了什么?

[编辑] 我决定使用 Jenkins 独立应用程序,因为我认为(对我而言)这是一个更好的解决方案,因为我的笔记本电脑不是构建服务器。此外,Jenkins 应用程序可以在启动时启动,因此它实际上充当本地服务器。

4

2 回答 2

1

快速猜测一下:如果您不想要脚本的交互性,而脚本可以没有它,您可以尝试在 java 命令行上设置无头模式:

-Djava.awt.headless=true 
于 2012-10-29T15:55:14.453 回答
0

我决定使用 Jenkins 独立应用程序,因为我认为(对我而言)这是一个更好的解决方案,因为我的笔记本电脑不是(无头)构建服务器。此外,Jenkins 应用程序可以在启动时启动,因此它也可以充当服务器。

于 2012-10-29T20:54:07.433 回答