我有以下问题:我在Jenkins-CI中有一个ANT任务(显然)需要访问OSX的窗口服务器(它需要显示一个窗口)。经过一些研究后,似乎只有当前登录的用户和“root”用户(或SUDO)才能访问OSX的窗口服务器。 ANT任务(Adobe ADL)实际上是“运行”一个构建,因此它必须弹出一个屏幕。
我在MacBook上运行OSX 10.7.something(Lion),Jenkins 1.487,Ant 1.8.4。
到目前为止我尝试了什么:
首先,试过'barebone'< exec>调用ADL的任务。工作,但得到错误意味着Jenkins作为守护进程运行(使用homedir / Users / shared / Jenkins / Home)无法访问OSX的Window Server。
通过更改jenkins launchd.conf文件中的USER_NAME,GROUP_NAME,JENKINS_HOME来运行Jenkins:https://wiki.jenkins-ci.org/display/JENKINS/Thanks+for+using+OSX+Installer 这给了很多错误/麻烦,我试图在与Jenkins CI的创建者沟通时解决,但遗憾的是无济于事。
尝试让Ant运行< exec>任务(运行一个shell脚本),其中我尝试使用密码使用这种偷偷摸摸的方式将密码传递给stdinput sudo:echo<密码> | sudo -S<命令>这真的很糟糕,但是因为我在本地运行Jenkins(无法从局域网外部访问),这是np。
试图让Ant运行< exec>任务,使用'重定向器'作为输入字符串我的密码。也是超级棒,但是,我只想让它发挥作用。它没有。
试过一个Jenkins SSH插件:没用。但是,我可以通过终端使用SSH连接到我自己的localhost,事实上,我不知道Jenkins SSH正在尝试做什么(我怎么能想出来呢?)所以我不知道为什么它不会工作
试图让Ant运行一个SSHEXEC任务(几个小时之后,终于工作了.Ant for mac是borked,有些可选的.jar任务没有被正确地重命名或者其他东西)但是我得到了一个“com.jcraft.jsch.JSchException:Auth fail”,我用Google搜索,似乎无法解决。唯一适用的解决方案是让sshd接受密码auths,这样做,仍然会出现同样的错误。
我认为我想要完成的事情并不值得我迄今为止在这个问题上花费的2天,尽管我学到了很多东西。但是,我只是想让它起作用而且不会接受失败,但是:)
我的问题:你必须解决类似的问题,你是怎么做到的?有没有其他方法我可以尝试解决这个问题?是否有提到的方法应该 JUST _WORK_并且我做错了什么?
[编辑]我决定使用Jenkins独立应用程序,因为我觉得(对我而言)这是一个更好的解决方案,因为我的笔记本电脑不是构建服务器。此外,Jenkins应用程序可以在启动时启动,因此它实际上充当本地服务器。
答案 0 :(得分:1)
只是一个简单的猜测:如果您不想要脚本的交互性,并且脚本可以不使用它,您可以尝试在java命令行上设置无头模式:
-Djava.awt.headless=true
答案 1 :(得分:0)
我决定使用Jenkins独立应用程序,因为我觉得(对我而言)这是一个更好的解决方案,因为我的笔记本电脑不是(无头)构建服务器。此外,Jenkins应用程序可以在启动时启动,因此它也可以充当服务器。