1

我以在我的帐户下启动的方式配置了 jenkins,但是当我使用 KIF 框架为我的单元测试构建项目时,Jenkins 启动了黑屏的 iPad 模拟器并且没有任何反应(jenkins 也没有提供任何有用的信息)。

任何人都可以建议解决这个问题吗?

请注意,从命令行一切正常。

最后,我发现解决方案需要使用 iPad Retina 或 iPad Retina(64 位):

-destination OS=7.0,name=iPad Retina

所以,最后一个假设的建议也不起作用 - 需要另一个解决方案。

4

3 回答 3

1

我自己也遇到了这个。跟进 user2738882 的自我回答,我对他的解决方案存在的缺陷进行了修复:

他是正确的,这是由于 Jenkins 作为启动守护进程运行而发生的。守护程序在启动时无需登录即可启动,但它们并非旨在访问 UI。这就是导致问题的原因。

不幸的是,如果您通过存档 (.war) 安装,Jenkins 默认安装为启动守护程序。

我采用的解决方案是将其移至启动代理。为此,请按照下列步骤操作:

  1. sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
  2. sudo cp /Library/LaunchDaemons/org.jenkins-ci.plist /Users/<Path to Jenkins User>/Library/LaunchAgents/org.jenkins-ci.plist
  3. 右键单击-> 获取有关 org.jenkins-ci.plist 文件的信息
  4. 更改所有用户的读写权限(底部)
  5. 修改 plist 文件,将 GroupName 键值从“daemon”更改为“agent”
  6. 右键单击-> 再次获取信息
  7. 将文件访问权限重置为以前
  8. sudo launchctl load /Users/<Path to Jenkins User>/Library/LaunchAgents/org.jenkins-ci.plist

这种方法的缺点是启动代理在与其关联的用户登录之前不会启动。为了适应这种情况,我将我的 Jenkins 用户配置为在服务器启动时登录。去做这个:

  1. 打开系统偏好设置
  2. 打开组和用户
  3. 登录选项
  4. 将您的 Jenkins 用户设置为自动登录:

这显然是一个安全问题,但这些机器应该只能在您的本地网络上访问,并且无论如何都应该在安全的位置。无论如何,我将机器设置为通过登录尽快显示屏幕保护程序。

于 2014-06-04T05:17:15.980 回答
0

我看到的解决方法是您可以创建 AppleScript,它将使用终端运行模拟器。例子:

do shell script "script"

其中,script是您的终端命令。

创建脚本后,将构建步骤“执行 shell 脚本”添加到 jenkins 并编写将运行 AppleScript 的脚本。例子:

open /Applications/MyScript.app
于 2013-11-25T08:59:11.557 回答
0

问题出在 Jenkins 中,并通过以下方式解决:

  1. jenkins通过命令 停止守护进程:

    sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
    
  2. 通过命令启动 Jenkins 作为进程:

    sudo nohup java -jar /Applications/Jenkins/jenkins.war --httpPort=8080 --ajp13Port=8010
    

而且效果很好!

但是有一个陷阱,在您的用户下启动 Jenkins 后,所有作业都消失了,您需要再次创建它。

于 2013-12-12T05:11:02.617 回答