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.js
384行
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 安装链接请求超时的主要内容,如果未能解决你的问题,请参考以下文章
错误:错误域=NSURLErrorDomain 代码=-1001 “请求超时。”