首页 文章

Xcode bot安装链接请求超时

提问于
浏览
5

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

在设备上安装配置文件后,xcode / bots页面有一个绿色"install"按钮 . 一旦我点击"install"按钮,它就永远不会加载应用程序,几分钟后我得到一个"Cannot connect to xx.yy.com"
Cannot connection

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

2 回答

  • 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)端口

    问题

    • 输入Xcode Server WEB

    • 选择机器人

    • 点击 Install 按钮

    • 如果是第一次要求安装证书 . 安装它并返回到网页 .

    • 再次点击 Install 按钮

    • 提醒信息"Cannot connect to server"

    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',

    Comment 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
    重启服务器

  • 4

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

    What is happening

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

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

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

    因此,为了允许自签名证书在您的设备上运行,您的Xcode Server将为您提供无线移动配置配置文件,其中包含此自签名Node.js应用程序的根证书 .

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

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

    除非您擦除设备,否则您现在无法使用从Xcode Server下载构建版本的设备 . (可不是闹着玩的)

    (我认为过去可以通过iPhone配置实用程序重置此信息,但是它已经停止与iOS8一起工作)

    Solution

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

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

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

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

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

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

相关问题