Xcode 构建服务器失败。未找到配置用于测试的设备

Xcode Build Server failed. The devices configured for testing were not found

我们的 Xcode 构建服务器失败并且不再执行任何测试。 版本 8.3 (8e162)

它只是失败了声明:

Build Service Issue

Error The devices configured for testing were not found.

当我执行 select“修复它”时,系统会简单地重定向到机器人设置中的“编辑机器人”->“设备”。有时 iOS 设备列表的加载时间(~15 秒)比以前(立即)长得多。

因此,当设备最终出现(如果它们甚至出现)并被 selected 时,会出现以下错误提示: 内部错误正在更新机器人,请尝试重新配置机器人

此处提供的解决方案对我来说不是问题,因为我已登录到机器人: xcode bots edit failed

有没有人找到

  1. 一个原因,为什么这个错误会突然出现
  2. 解决这个问题?不幸的是,按照此处的建议,降级到较旧的 xCode 版本对我来说没有选择:https://forums.developer.apple.com/thread/76453 因为我已经得到了用户降级到的版本。

共享方案是否突然出现问题或配置错误可能导致问题?

在我重新创建机器人之前,我真的很想修复机器人,以保留构建历史等。

在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 不管你是谁:)

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

我将我使用的机器上 Xcode 的版本升级到 运行 机器人,它只安装了 11.4 模拟器。将模拟器更改为这些最新版本修复了它。