Xcode bot install link request time de espera

He podido get mi bot Xcode para integrarse con éxito y crear un file .ipa. Tengo un certificate ssl instalado en mi server Xcode y puedo conectarme a la url xcode / bot fine. Cuando me conecto a la url a través de un iPad, primero se me pide que instale un certificate, pero dice que no está verificado en rojo (ver el file adjunto) No verificado

Después de instalar el perfil en el dispositivo, la página xcode / bots tiene un button verde de "installation". Una vez que hago clic en el button "instalar", nunca carga la aplicación y después de varios minutos recibo un post "No puedo conectarme a xx.yy.com" No se puede conectar

¿Alguna idea de lo que podría ser?

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

Nginx + Proxy inverso + OS X Server [Servidor Xcode]

Preparar

Internet -> [443] Enrutador (Reenvío de puertos) -> [443] Servidor Nginx (Tiene certificate HTTPS) -> [443] Mac Mini (Servidor OS X, Servidor Xcode)

(StartSSL certificate is used)

Xcode Server utiliza puertos 20300 (HTTP), 20343 (HTTPS)

Problema

  1. Ingrese la WEB del Servidor Xcode
  2. Seleccione Bot
  3. presiona el button Install
  4. Se le pedirá que instale el certificate si es la primera vez. Instálalo y regresa a la página web.
  5. presiona nuevamente el button Install
  6. Mensaje de alerta "No se puede conectar al server"

Cómo funciona OTA

  1. Cuando presionas el button Install , navega a https://<DOMAIN>/xcode/internal/api/integrations/<UNIQUE ID>/install_product
  2. Devuelve el estado 302 a la nueva location: itms-services://?action=download-manifest&url=https://<DOMAIN>:20343/api/integrations/<UNIQUE ID>/<RECENT Integrated ID>/install_manifest.plist
  3. itms-services URL Schema llama al dispositivo iOS para ejecutar la installation.
  4. Las descargas de iOS install_manifest.plist se basan en información de plist, selecciona la URL IPA correcta
  5. https://<DOMAIN>:20343/api/assets/token/<RECENT Integrated ID>/<UNIQUE ID>-<Bot Name>/<Intergation #>/<Product Name>-<Device Model>.ipa
  6. Descargar e instalar

Análisis

  • En el paso 2, devuelve la URL <DOMAIN>:20343 . El número de puerto 20343 no está abierto por el enrutador (o Firewall)
  • También la ruta debería ser /xcode/internal/api/integrations/ not /api/integrations/

Como arreglar

Ubicación: /Library/Developer/XcodeServer/CurrentXcodeSymlink/Contents/Developer/usr/share/xcs/xcsd/

Modificar constants.js Línea 25

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

classes/fileClass.js comentarios classes/fileClass.js Línea 383

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

Modificar classes/fileClass.js Línea 384

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

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

Servidor de reinicio

TL; DR Puede solucionarlo enviándose el file ota.mobileconfig – vea al pie de esta respuesta

Que esta pasando

Cuando hace clic en el button Instalar, el file IPA no se descarga de https: //yourxcode.local sino que se descarga de https: //yourxcode.local: 20343

El server que escucha en https: //yourxcode.local: 20343 en realidad no es el mismo server Apache que se ejecuta en su server OS X. Es una aplicación separada de Node.js que forma parte de la configuration del Servidor Xcode.

Por razones que solo conocen las personas de Apple que lo crearon, esta aplicación Node.js usa un certificate autofirmado y NO el certificate SSL que tal vez ya tenía instalado en su server OS X. (Realmente no entiendo por qué lo hacen, no tiene sentido)

Por lo tanto, para permitir que ese certificate autofirmado funcione en su dispositivo, su server Xcode le ofrece un perfil de configuration mobile por air que contiene el certificate raíz para su aplicación Node.js autofirmada.

Eso es lo que ve la primera vez que presiona el button Instalar la primera vez: Safari le pregunta si desea aceptar e instalar ese nuevo certificate.

Ahora, si falla la installation de este certificate, parece que iOS todavía lo marca como instalado, aunque en realidad no se instaló correctamente. No hay una interfaz de usuario para deshacer esto, o eliminar el certificate, por lo que no hay forma de repetir lo anterior.

Ahora está atrapado con un dispositivo que no puede usar para download comstackciones desde Xcode Server a less que limpie su dispositivo . (No es broma)

(Creo que solía ser posible restablecer esta información con la Utilidad de configuration de iPhone, pero dejó de funcionar en set con iOS8)

Solución

Sin preocupaciones, he encontrado una solución.

En su server OS X, hay un file llamado

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

Envíe por correo electrónico este file a usted mismo. En el dispositivo iOS donde obtienes el error Cannot connect to yourxcode.local error Cannot connect to yourxcode.local , abre este file desde Mail.app como un file adjunto. Su dispositivo le preguntará nuevamente si desea instalar este certificate. Haz clic a través de él. Respuesta Sí.

Vuelva a crear la pantalla de resumen y presione Instalar nuevamente. Por alguna razón, volverá a pedirle que acepte el certificate una vez más. Haga clic en Sí y confirme.

La aplicación ahora se instalará en su dispositivo.