通过SSH在Xcode 6下运行Xcode构建测试时超时
我似乎在将Xcode6与jenkins集成时遇到了问题,我目前有这样的设置并使用Xcode5 当xcode 6通过SSH远程运行时,模拟器超时,当我在本地运行时,它会成功 命令 xcodebuild-workspace PROJECTNAME.xcworkspace-scheme BGO_测试-目标'platform=iOS模拟器,name=iphone5s'-derivedDataPath./Build clean测试 2014-08-19 10:46:36.591 xcodebuild[33966:381f]iPhone模拟器:等待>模拟器启动120秒超时,当前状态为1 测试失败: 测试目标BGO_测试遇到错误(等待模拟器启动120秒超时,当前状态为1通过SSH在Xcode 6下运行Xcode构建测试时超时,ssh,jenkins,ios-simulator,xcode6,xcodebuild,Ssh,Jenkins,Ios Simulator,Xcode6,Xcodebuild,我似乎在将Xcode6与jenkins集成时遇到了问题,我目前有这样的设置并使用Xcode5 当xcode 6通过SSH远程运行时,模拟器超时,当我在本地运行时,它会成功 命令 xcodebuild-workspace PROJECTNAME.xcworkspace-scheme BGO_测试-目标'platform=iOS模拟器,name=iphone5s'-derivedDataPath./Build clean测试 2014-08-19 10:46:36.591 xcodebuild[33
使用最新的Xcode 6 beta 6测试,我以前见过这个错误,一种可能性是,由于您可能从internet下载了Xcode 6 beta(不是appstore,因为它还不可用),您尝试运行它的机器将显示一个弹出窗口,询问您是否真的想从internet上打开这个应用 当xcodebuild试图启动iPhone模拟器应用程序时,也会发生同样的情况 您可能想尝试的一件事是与机器共享屏幕,然后在弹出窗口中单击“打开” 如果这仍然不起作用,我会尝试:
我的工作原理是OSX上的SSH是作为启动守护进程启动的,启动守护进程不允许显示UI 我通过使用JavaWebStart启动Jenkins从机来解决这个问题,然后将Jenkins从机作为启动服务安装 不幸的是,Jenkins slave随后将自己安装为一个启动守护进程,这与无法启动测试的问题完全相同 我通过将
/System/Library/LaunchDaemons
中的Jenkins Slave LaunchDaemon plist和jar文件移动到~/Library/LaunchAgents
中解决了这个问题,并更新了plist文件中的路径
这最终允许我在OSX jenkins从机上运行XCode6(Beta6)测试。我最终在Xcode5上解决了这个问题,基本上运行了:
sudo security authorizationdb write system.privilege.taskport allow
这将消除其中一类身份验证弹出窗口。您还需要运行:
sudo DevToolsSecurity -enable
然而,一旦我升级到Xcode 6,我现在在尝试通过SSH运行Xcode构建测试时会遇到无限的挂起。只要我登录到控制台并从键盘上运行它们,它们就会继续正常运行。注意:设备名称在Xcode 7中更改,因此您不再使用
iPhone 5(9.1模拟器)指定它们
而是iPhone5(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>'
#首先获取所需的UDID
xcrun仪器-s
#然后启动它
打开-一个“iOS模拟器”-args-CurrentDeviceUDID
#等一段时间。。。。
睡眠5
#然后启动单元测试
xcodebuild[…]-destination'platform=iOS模拟器,name='10〕
旧职位
此错误在Xcode 6.3及以上版本中已修复。如果您在较新的Xcode中遇到类似问题,则可能是另一个错误
苹果公司关于Bug ID#18001199的后续行动:
运行GUI时不支持启动守护进程提供的上下文
SSH服务和Jenkins的默认设置是
在早期版本的Xcode 5中,两者都实现为启动守护进程
xcodebuild可以在此上下文中在iOS模拟器上运行测试,但是
这从来都不是一个受支持的配置,正如您所注意到的
从Xcode 6开始不再工作
与LaunchDaemon不同,LaunchAgent提供了一个可以运行的上下文
GUI应用程序-如果用户当时已登录,则显示一个窗口
服务器/Aqua会话。正在从转换Jenkins配置
从LaunchDaemon到LaunchAgent可以避免报告的错误
您还可以使用launchd在iOS模拟器上运行测试
从SSH会话,通过手工创建LaunchAgent和手动
加载/启动,或使用“启动CTL提交”
好的,在对这里的评论进行了更多的挖掘之后(非常感谢),我发现通过JNLP启动从机是可行的
正如许多人提到的,目前不可能通过SSH运行单元测试,因此在Apple修复之前,您可能希望现在转向JNLP代理
如果与JNLP连接仍然无法解决此问题,请尝试本文中提到的解决方案 i、 e:在命令行上运行以下命令: 开发工具安全-启用 sudo dscl.-append/Groups/_开发者组成员身份“运行sim卡的用户” 安全授权db write system.privilege.taskport是开发人员 见参考文献和
我最近发现,如果您安装新版本的Xcode而不启动它,模拟器可能会再次超时。为了解决这个问题,我不得不手动启动Xcode,并安装它所要求的其他工具。我终于找到了一个好的简单解决方案。JNLP给我们的jenkins服务器带来了许多问题。> SSH超时的解决方法通过 “Mavericks(10.9)和Yosemite(10.10)确定进程是否可以通过访问进程的父级访问辅助功能挂钩。通过将launchd放入允许的进程列表中,通过SSH或Jenkins启动的进程可以访问整个系统的辅助功能挂钩。为此,您可以修改
#!/bin/bash
# This will add lauchd to the list of allowed processes for accessibility access
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceAccessibility','/sbin/launchd',1,1,1,NULL)"
# This outputs the rows in the TCC database
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'select * from access'
echo "Restart is required for these changes to take effect"