Xcode bot安装链接请求超时

Hob*_*ige 5 ssl xcode objective-c ios xcode-bots

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

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

关于这可能是什么的任何想法?

Sun*_*oon 10

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

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

建立

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

(StartSSL certificate is used)

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

问题

  1. 输入Xcode Server WEB
  2. 选择Bot
  3. 点击Install按钮
  4. 如果是第一次,它会要求安装证书.安装它并返回到网页.
  5. Install再次按下按钮
  6. 警告消息"无法连接到服务器"

OTA如何运作

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

分析

  • 在第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

重启服务器

  • @timgcarlson我向https://bugreport.apple.com/报告,他们让我运行"sudo xcrun xcsdiagnose"并上传文件.我还没有得到任何更新. (2认同)

Ste*_*ntz 4

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

怎么了

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

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

由于只有构建此应用程序的 Apple 人员才知道的原因,此 Node.js 应用程序使用自签名证书,而不是您可能已安装在 OS X Server 上的 SSL 证书。(我真的不明白他们为什么这样做,毫无意义)

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

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

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

您现在被困在一个设备中,除非您擦除设备,否则您无法使用该设备从 Xcode Server 下载版本。(不是开玩笑)

(我认为过去可以使用 iPhone 配置实用程序重置此信息,但在 iOS8 中不再起作用)

解决方案

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

在您的 OS X Server 上,有一个名为

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

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

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

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