Xcode bot 安装链接请求超时

Posted

技术标签:

【中文标题】Xcode bot 安装链接请求超时【英文标题】:Xcode bot install link request time out 【发布时间】:2015-02-05 04:23:16 【问题描述】:

我已经能够让我的 Xcode 机器人成功集成并创建一个 .ipa 文件。我在我的 Xcode 服务器上安装了一个 ssl 证书,我可以很好地连接到 xcode/bots url。当我通过 iPad 连接到 url 时,首先提示我安装证书,但它说它没有以红色验证(见附件)

在设备上安装配置文件后,xcode/bots 页面有一个绿色的“安装”按钮。一旦我点击“安装”按钮,它就永远不会加载应用程序,几分钟后我得到一个“无法连接到 xx.yy.com”

对这可能是什么有任何想法?

【问题讨论】:

也有这个问题,但这里的upvoted 解决方案并没有解决它。我找到了另一个有效的 SO:***.com/questions/25974017/… 【参考方案1】:

https://github.com/mtjddnr/lab/wiki/Xcode-Integration-Server-OTA---Reverse-Proxy-nginx

Nginx + 反向代理 + OS X 服务器[Xcode 服务器]

设置

Internet -> [443] 路由器(端口转发)-> [443]Nginx 服务器(有 HTTPS 证书)-> [443]Mac Mini(OS X 服务器,Xcode 服务器)

(StartSSL certificate is used)

Xcode Server 使用 20300(HTTP)、20343(HTTPS) 端口

问题

    进入Xcode Server WEB 选择机器人 点击Install按钮 如果是第一次,它会要求安装证书。安装并返回网页。 再次点击Install按钮 警报消息“无法连接到服务器”

OTA 的工作原理

    点击Install按钮时,导航到https://<DOMAIN>/xcode/internal/api/integrations/<UNIQUE ID>/install_product 它将状态 302 返回到新位置:itms-services://?action=download-manifest&url=https://<DOMAIN>:20343/api/integrations/<UNIQUE ID>/<RECENT Integrated ID>/install_manifest.plist itms-services URL Schema 调用 ios 设备运行安装。 iOS下载install_manifest.plist然后根据plist信息,选择正确的IPA URL https://<DOMAIN>:20343/api/assets/token/<RECENT Integrated ID>/<UNIQUE ID>-<Bot Name>/<Intergation #>/<Product Name>-<Device Model>.ipa 下载并安装

分析

在步骤 2 中,它返回 URL <DOMAIN>:20343。路由器(或防火墙)未打开端口号 20343 路径也应该是/xcode/internal/api/integrations/ 而不是/api/integrations/

如何修复

位置:/Library/Developer/XcodeServer/CurrentXcodeSymlink/Contents/Developer/usr/share/xcs/xcsd/

修改constants.js第25行

XCSProxiedAPIBasePath: '/xcode/api',XCSProxiedAPIBasePath: '/xcode/internal/api',

评论classes/fileClass.js第383行

//host = host.split(':')[0] + ':' + k.XCSHTTPSPort; // force traffic over the HTTPS port

修改classes/fileClass.js384行

var basePath = k.XCSAPIBasePath; // connection is direct to xcsd, always

var basePath = k.XCSProxiedAPIBasePath; // connection is direct to xcsd, always

重启服务器

【讨论】:

这是一个很棒的解决方法,谢谢!希望也有一个错误报告。 绝对精彩!我已经断断续续地敲了一个星期。非常感谢您发布此答案。没有 OTA 安装,Xcode Server 就像啤酒一样。 在尝试了一天多的“无法连接到服务器”警报的各种解决方案之后,这终于解决了我的问题。我发现这一点的唯一原因是在连接到 Xcode 时阅读设备控制台。希望这个 hack 很快在 Xcode 中得到修复! @SungWookMoon 您是否为此提交了一份雷达文件,或者您是否知道是否已经存在? @timgcarlson 我向bugreport.apple.com 报告,他们要求我运行“sudo xcrun xcsdiagnose”并上传文件。而且我还没有收到任何更新。【参考方案2】:

TL;DR 您可以通过向自己发送 ota.mobileconfig 文件来解决此问题 - 请参阅此答案的底部

发生了什么

当您单击该安装按钮时,IPA 文件不会从 https://yourxcode.local 下载,而是从 https://yourxcode.local:20343 下载

侦听https://yourxcode.local:20343 的服务器实际上与在您的 OS X 服务器上运行的 Apache 服务器不同。它是一个单独的 Node.js 应用程序,是 Xcode 服务器设置的一部分。

由于只有 Apple 开发者知道的原因,这个 Node.js 应用程序使用自签名证书,而不是您可能已经安装在 OS X 服务器上的 SSL 证书。 (我真的不明白他们为什么要这样做,这毫无意义)

因此,为了让自签名证书在您的设备上运行,您的 Xcode 服务器为您提供了一个无线移动配置文件,其中包含您的自签名 Node.js 应用程序的根证书。

这是您第一次点击“安装”按钮时看到的内容:Safari 会询问您是否要接受并安装该新证书。

现在,如果此证书的安装失败,iOS 似乎仍将其标记为已安装,即使它实际上没有正确安装。没有 UI 可以撤消此操作或删除证书,因此无法重复上述操作。

您现在被一个无法用于从 Xcode Server 下载构建的设备所困,除非您擦除您的设备。 (不开玩笑)

(我认为以前可以使用 iPhone 配置实用程序重置此信息,但与 iOS8 一起无法正常工作)

解决方案

不用担心,我找到了解决方法。

在您的 OS X 服务器上,有一个名为

的文件

/Library/Developer/XcodeServer/ConfigurationProfiles/ota.mobileconfig

将此文件通过电子邮件发送给您自己。在您收到 Cannot connect to yourxcode.local 错误的 iOS 设备上,从 Mail.app 作为附件打开此文件。您的设备会再次询问您是否要安装此证书。点击它。回答是。

返回构建摘要屏幕并再次点击安装。由于某种原因,它会再次要求您再次接受证书。点击是并确认。

应用程序现在将安装在您的设备上。

【讨论】:

不幸的是,它对我不起作用。运行 OS X Server 5.0.15 和 Xcode 7.2 我也没有,似乎什么都没做

以上是关于Xcode bot 安装链接请求超时的主要内容,如果未能解决你的问题,请参考以下文章

无法执行请求。 CFNetwork 错误:请求超时

xcode ios 模拟器 请求超时

EF 执行查询请求超时,数据多。

错误:错误域=NSURLErrorDomain 代码=-1001 “请求超时。”

错误:错误域=NSURLErrorDomain 代码=-1001“请求超时。”

错误:错误域=NSURLErrorDomain 代码=-1001“请求超时。”