尝试从jenkins运行UI自动化脚本时出错

时间:2014-11-12 12:34:49

标签: ios user-interface jenkins automation

我正在使用 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的权限被拒绝。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

  1. 调用Instruments的用户必须具有开发者权限。用户必须位于_developer组。

  2. 必须设置允许用户访问Instruments的安全权限。请参阅man page for DevToolsSecurity

  3. 用户必须登录窗口服务器才能使用模拟器。如何执行此操作将在某种程度上取决于该用户的Jenkins和OS配置。在旧版本的MacOS中,创建SSH连接回到机器并通过该连接运行Instruments通常可以正常工作。 YMMV。

  4. 请注意,上述任何步骤都会升级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的服务移动并没有解决问题。我的解决方案如下:

  1. 删除/Library/LaunchAgents/org.jenkins-ci.plist文件
  2. 删除服务
  3. 使用Automator工具创建iOS应用程序。 (我认为默认情况下存在):

    • 我选择&#34;图书馆&#34; - &GT; &#34;公用设施&#34; - &GT; &#34; Shell脚本&#34;。
    • 输入/Library/Application Support/Jenkins/jenkins-runner.sh的内容。
    • export JENKINS_HOME=/path/to/jenkins放在顶部。
    • 将应用保存在某个地方
  4. 转到首选项 - &gt;用户&amp;群组 - &gt;选择您的用户 - &gt;添加已保存的应用。

  5. 这样,jenkins在登录后作为应用程序运行,它具有任何其他应用程序的所有特权。