我正在使用 Xcode 6.1 。我需要从jenkins运行UI自动化脚本作为后期构建操作。我使用的命令如下所示。
instruments -t $TRACETEMPLATE -w $DEVICE $APP_PATH -e UIASCRIPT $SCRIPT -e UIARESULTSPATH $RESULTS_PATH | grep "<" > test-reports/test-results.xml
当我运行时,jenkins会抛出以下错误。
无法授权权限(0x1),状态为:-60007。 2014-11-12 16:31:30.685 instruments [488:2607] - [XRSimulatorDevice prepareConnection:]:无法授权模拟守护进程(99637):8 仪器跟踪错误:目标无法运行:调试com.test.app的权限被拒绝。
非常感谢任何帮助。
答案 0 :(得分:1)
调用Instruments的用户必须具有开发者权限。用户必须位于_developer
组。
必须设置允许用户访问Instruments的安全权限。请参阅man page for DevToolsSecurity
用户必须登录窗口服务器才能使用模拟器。如何执行此操作将在某种程度上取决于该用户的Jenkins和OS配置。在旧版本的MacOS中,创建SSH连接回到机器并通过该连接运行Instruments通常可以正常工作。 YMMV。
请注意,上述任何步骤都会升级Jenkins用户的权限,这会带来安全隐患。
答案 1 :(得分:0)
我收到了一条几乎完全相同的错误消息,这似乎是因为当Jenkins作为启动守护程序启动时,它无法访问屏幕,即使您以&#34;詹金斯&#34;
我从阅读此讨论中找到了解决方案:https://issues.jenkins-ci.org/browse/JENKINS-14421
您可以使用java -jar jenkins.war
从终端启动Jenkins,也可以创建启动代理,该代理以登录用户身份运行,并且可以访问用户的屏幕。
我通过将/Library/LaunchDaemons/org.jenkins-ci.plist
移至/Library/LaunchAgents/org.jenkins-ci.plist
并从plist中删除UserName
键和值来实现后一种解决方案。现在Jenkins在我启动机器时并没有自动启动,但它确实在我登录桌面时启动,这是运行UI自动化测试所必需的。
Jenkins似乎仍然无法启动模拟器应用程序,但如果Simulator已经在运行,那么UI Automation脚本就可以正常运行。
答案 2 :(得分:0)
我也收到了此错误消息。从LaunchDaemons到LaunchAgent的服务移动并没有解决问题。我的解决方案如下:
/Library/LaunchAgents/org.jenkins-ci.plist
文件使用Automator工具创建iOS应用程序。 (我认为默认情况下存在):
/Library/Application Support/Jenkins/jenkins-runner.sh
的内容。 export JENKINS_HOME=/path/to/jenkins
放在顶部。转到首选项 - &gt;用户&amp;群组 - &gt;选择您的用户 - &gt;添加已保存的应用。
这样,jenkins在登录后作为应用程序运行,它具有任何其他应用程序的所有特权。