我似乎遇到了将Xcode6与jenkins集成的问题,我目前有这个设置并使用Xcode 5.
随着xcode 6通过SSH远程运行模拟器超时,当我在本地运行时它成功.
命令
xcodebuild -workspace PROJECTNAME.xcworkspace -scheme BGO_Tests -destination'platform = iOS模拟器,名称= iPhone 5s'dedevedDataPath ./Build clean test
2014-08-19 10:46:36.591 xcodebuild [33966:381f] iPhoneSimulator:超时等待120秒>模拟器启动,当前状态为1.
测试失败:测试目标BGO_Tests遇到错误(超时等待120秒,模拟器启动,当前状态为1
测试了最近的Xcode 6 beta 6
注:设备名称在Xcode 7改变,让你不再为他们指定使用iPhone 5 (9.1 Simulator)
,而是iPhone 5 (9.1)
.
使用xcrun instruments -s
来获得设备的当前列表,然后使用你可以预先启动它:
xcrun instruments -w "iPhone 5 (9.1)" || echo "(Pre)Launched the simulator."
我得到了一点,我在那里提出的建议不再适用了.除了进行此处提到的更改之外,还需要启动模拟器xcodebuild,期待在运行xcodebuild 之前:
# First get the UDID you need xcrun instruments -s # Then launch it open -a "iOS Simulator" --args -CurrentDeviceUDID <sim device UDID> # and wait some time.... sleep 5 # Then launch your unit tests xcodebuild [...] -destination 'platform=iOS Simulator,name=<device name matching the UDID>'
此错误在Xcode 6.3及更高版本中得到修复.如果您在较新的Xcode中遇到类似问题,则可能是另一个错误.
关于Bug ID#18001199的Apple跟进:
运行GUI应用程序不支持LaunchDaemons提供的上下文.SSH服务和Jenkins的默认设置都实现为LaunchDaemons.在Xcode 5的早期版本中,xcodebuild可以在此上下文中在iOS模拟器上运行测试,但这从来都不是受支持的配置,并且正如您已经注意到Xcode 6不再有效.
与LaunchDaemons不同,LaunchAgents提供了一个上下文,您可以在其中运行GUI应用程序 - 如果用户当时使用窗口服务器/ Aqua会话登录.将Jenkins配置从LaunchDaemon转换为LaunchAgent将避免报告的问题.您还可以使用launchd从SSH会话在iOS模拟器上运行测试,方法是制作LaunchAgent并手动加载/启动它,或者使用"launchctl submit".
好的,经过一些更多的围绕这里的评论(非常感谢Opal),我发现通过JNLP启动奴隶相反.
正如许多人所提到的,目前无法通过SSH运行单元测试,因此您可能希望现在转向JNLP代理,直到Apple修复它.
如果与JNLP连接仍无法解决问题,请尝试本评论中提到的解决方案.
即:在命令行上运行这些:
DevToolsSecurity -enable
sudo dscl.-append/Groups/_developer GroupMembership"user-that-runs-the-sim"
security authorizationdb write system.privilege.taskport is-developer
请参阅此处和此处的参考资料.
我最近发现,如果您安装新版本的Xcode并且不启动它.模拟器可能会再次开始超时.为了解决这个问题,我不得不手动启动Xcode,并安装它要求的其他工具.
我最后通过执行以下步骤在Xcode 5上解决了这个问题,基本上是运行:
sudo security authorizationdb write system.privilege.taskport allow
这将消除一类这些身份验证弹出窗口.你还需要运行:
sudo DevToolsSecurity -enable
但是,一旦我升级到Xcode 6,我现在在尝试通过SSH运行xcodebuild测试时会无限挂起.只要我登录到控制台并从键盘运行它们,它们就会继续运行.