Xcode Build Server失败。找不到配置用于测试的设备

时间:2017-04-27 11:56:34

标签: xcode xcode8 xcode-bots

我们的Xcode Build Server失败,不再执行任何测试。 版本8.3(8e162)

它只是失败了声明:

  

构建服务问题

     

错误找不到为测试配置的设备。

enter image description here

当我选择"修复它"一个人被简单地重定向到"编辑Bot" - > "器件"在机器人的设置中。有时,iOS设备列表加载的时间比以前(~15秒)更长(。立即)。

因此,当设备最终显示(如果它们甚至显示)并被选中时,会出现以下错误提示: 内部错误更新Bot,请尝试再次配置bot

这里提供的解决方案对我来说没问题,因为我在机器人登录: xcode bots edit failed

有没有人找到

  1. 一个原因,为什么这个错误会突然发生
  2. 这个解决方案?不幸的是,降级到较旧的xCode版本对我来说没有选择:https://forums.developer.apple.com/thread/76453因为我已经获得了用户降级的版本。
  3. 共享方案或某些东西突然出现问题,或者是否配置错误可能会导致问题?

    在我再次创建机器人之前,我真的想修复僵尸程序,以保留构建历史等。

2 个答案:

答案 0 :(得分:4)

在github上找到用户@juce提供的解决方案。 Link to original response in Apple Developer Forum

Here' is a link to github post explained a details by @juke

脚本副本:

--- deviceClass.js  2017-05-05 07:10:40.000000000 -0700
+++ deviceClass.js.NEW  2017-05-05 07:13:36.000000000 -0700
@@ -12,6 +12,7 @@
     dbCoreClass = require('./dbCoreClass.js'),
     xcsutil = require('../util/xcsutil.js'),
     logger = require('../util/logger.js'),
+    fs = require('fs'),
     redisClass = require('./redisClass.js');

 /* XCSDeviceClass object */
@@ -141,12 +142,11 @@
         query.endkey = [unitTestUUID, {}];
     }

-    redisClass.getDynamicQuery(req, doc_type, function DEVListRedisGetDynamicQuery(err, docs) {
-        if (err) {
-            opFailed(err);
-        } else if (docs) {
+    var devicesFile = '/Library/Developer/XcodeServer/Logs/xcs_devices.json';
+    fs.readFile(devicesFile, 'utf8', function (err,docs) {
+        if (docs) {
             docs = JSON.parse(docs);
-            log.info('Found', docs.length, 'devices in Redis.');
+            log.info('Found', docs.length, 'devices in file-system cache.');
             opSucceeded(docs);
         } else {
             log.debug('No devices found in Redis. Falling back to CouchDB.');
@@ -167,9 +167,12 @@
                 } else {
                     log.info('Found', docs.length, 'devices in CouchDB.');

-                    redisClass.setDynamicQuery(req, doc_type, JSON.stringify(docs), function DEVListRedisSetDynamicQuery(err, wasSaved) {
-                        if (wasSaved) {
-                            log.debug('Successfully cached devices to Redis.');
+                    fs.writeFile(devicesFile, JSON.stringify(docs), 'utf8', function(err) {
+                        if (err) {
+                            log.debug('Problem saving devices into ' + devicesFile);
+                        }
+                        else {
+                            log.debug('Successfully cached devices to file.');
                         }
                         // Even if there's an error (i.e. Redis suddenly went down), we can still continue since
                         // the next request would be redirected to CouchDB.

如何申请。下载或复制此脚本,并路径现有文件,如下所示:

[sudo] cd /Library/Developer/XcodeServer/CurrentXcodeSymlink/Contents/Developer/usr/share/xcs/xcsd/classes
    patch deviceClass.js /path/to/xcs-tweaks/xcs-devices-patch.diff

然后重启模拟器并可能重启你的机器(这是我的情况)。然后检查它是否正在工作: sudo xcrun xcscontrol --list-simulators

非常感谢@juke无论你是谁:)

答案 1 :(得分:0)

我的问题是我在较早版本的Xcode(仅安装11.2模拟器)上设置了该机器人。

我在用于运行机器人的机器上升级了Xcode的版本,该机器仅安装了11.4个模拟器。将模拟器更改为这些最新版本即可解决此问题。