我已经能够让我的 Xcode 机器人成功集成并创建一个 .ipa 文件。我在我的 Xcode 服务器上安装了一个 ssl 证书,我可以很好地连接到 xcode/bots url。当我通过 iPad 连接到 url 时,首先提示我安装证书,但它说它没有以红色验证(见附件)
在设备上安装配置文件后,xcode/bots 页面有一个绿色的“安装”按钮。一旦我点击“安装”按钮,它就永远不会加载应用程序,几分钟后我得到一个“无法连接到 xx.yy.com”
关于这可能是什么的任何想法?
我已经能够让我的 Xcode 机器人成功集成并创建一个 .ipa 文件。我在我的 Xcode 服务器上安装了一个 ssl 证书,我可以很好地连接到 xcode/bots url。当我通过 iPad 连接到 url 时,首先提示我安装证书,但它说它没有以红色验证(见附件)
在设备上安装配置文件后,xcode/bots 页面有一个绿色的“安装”按钮。一旦我点击“安装”按钮,它就永远不会加载应用程序,几分钟后我得到一个“无法连接到 xx.yy.com”
关于这可能是什么的任何想法?
https://github.com/mtjddnr/lab/wiki/Xcode-Integration-Server-OTA---Reverse-Proxy-Nginx
Internet -> [443] 路由器(端口转发)-> [443]Nginx 服务器(有 HTTPS 证书)-> [443]Mac Mini(OS X 服务器,Xcode 服务器)
(StartSSL certificate is used)
Xcode Server 使用 20300(HTTP)、20343(HTTPS) 端口
Install
按钮Install
按钮Install
按钮时,它导航到https://<DOMAIN>/xcode/internal/api/integrations/<UNIQUE ID>/install_product
itms-services://?action=download-manifest&url=https://<DOMAIN>:20343/api/integrations/<UNIQUE ID>/<RECENT Integrated ID>/install_manifest.plist
itms-services
URL Schema 调用 iOS 设备来运行安装。install_manifest.plist
然后根据 plist 信息,它选择正确的IPA
URLhttps://<DOMAIN>:20343/api/assets/token/<RECENT Integrated ID>/<UNIQUE ID>-<Bot Name>/<Intergation #>/<Product Name>-<Device Model>.ipa
<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
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 以附件形式打开此文件。您的设备会再次询问您是否要安装此证书。点击它。回答是的。
返回构建摘要屏幕并再次点击安装。由于某种原因,它会再次要求您再次接受证书。单击是并确认。
该应用程序现在将安装在您的设备上。