Análisis

Análisis de BuddyBuild

La próxima gran integración que llegará a Xcode

Resumen del artículo

  • Analizamos BuddyBuild, la última compra de Apple. Un servicio que incluye integración continua, distribución e informes en una suite que se incorporará a Xcode. Descubre todos los detalles de lo que es capaz de hacer ahora este software en la nube y de cómo el ecosistema de ciclo de vida del software oficial de Apple pueden expandirse mucho más allá de lo que imaginamos.

Una de las políticas de Apple (como otras muchas grandes compañías) es no re-inventar la rueda sino comprar aquella que otros ya han hecho. Pasó con Siri, con PrimeSense (empresa tras los sensores en el notch del iPhone X) o con TestFlight, una de las funcionalidades más usadas en el desarrollo iOS.

Ahora Apple ha vuelto a dar un paso adelante y más allá de ofrecer integración de bots con Xcode 9 sin necesidad de tener macOS Server (y con ello crear una implementación de integración continua), ha comprado BuddyBuild, una empresa con un sistema innovador que no solo incluye CI, sino distribución automática y gestión de incidencias. Un todo en uno.

Vamos a analizar este producto, sus posibilidades y qué podrá aportar a la herramienta Xcode, a cuyo equipo se han incorporado todos los empleados de esta compañía.

Integración continua, distribución automática y feedback

Pero antes de empezar hay que entender conceptos básicos. Porque si no sabemos para qué sirve esta plataforma difícilmente entenderemos qué puede aportar a nuestro proyecto. Vamos a ver algunas definiciones simples:

  • Integración continua: es un procedimiento automático unido a los gestores de repositorios. Imagina que tenemos un servidor GIT y subimos los últimos cambios al mismo. Nada más hacerlo, nuestro servicio de CI lanzaría una compilación completa del producto y lanzaría todos los tests unitarios que tuviera, proporcionándonos un informe de resultados y de la propia compilación. De esta forma siempre tenemos disponible un ejecutable con los últimos cambios para probar. Y además, un informe de la ejecución de tests que muchas veces (en un gran proyecto) pueden suponer mucho tiempo si estos incluyen pruebas de interfaz o medición de tiempos de respuesta.
  • Distribución automática: nuestra integración continua genera el binario con los últimos cambios. ¿Y ahora qué? Pues el siguiente paso es la distribución automática o CD (Content Delivery). Un sistema de distribución que haga que a todos nuestros probadores de la app se les actualice esta de forma automática. Este es uno de los huecos que tiene hoy día TestFlight, sin duda alguna.
  • Feedback: ¿Qué son las pruebas si no hay informes de las mismas? TestFlight adolece de no tener un sistema fácil e intuitivo de reportar errores. La inclusión de un SDK en nuestra app es una de las cosas que pueden facilitar enviar más datos y contenido que ayude a detectar y arreglar errores.

Estas son las tres funciones principales que cubre la suite BuddyBuild, todo en productos en la nube y compatibles con desarrollos iOS. Una herramienta pensada para complementar y completar lo que TestFlight ya nos proporciona en los desarrollos. Y todo ello, presumiblemente, será gratuito para todos los desarrollos con cuenta de pago. De hecho, actualmente BuddyBuild es de pago en todas sus configuraciones, salvo una gratuita muy restrictiva, como es lógico.

Pero, ¿qué es BuddyBuild?

Actualmente el flujo de trabajo de BuddyBuild permite usar servidores en la nube de repositorio Git como los conocidos GitHub, BitBucket, GitLab o Beanstalk. Además, también soporta soluciones propias donde tengamos instalado un servidor GIT de tipo Enterprise.

Buddy Build

Una vez demos permiso al cliente de integración continua, con cada nuevo push que hagamos al repositorio, el CI se pone a actuar y generará una nueva versión del binario y lanzará todos los tests que el proyecto tenga integrados. El cliente CI no solo soporta desarrollo nativo iOS, sino también el uso de librerías híbridas como Cordova, Phone Gap, Ionic o React Native. Si nuestro proyecto usa gestores de dependencias como CocoaPods o Carthage, también están soportados.

El sistema actual soporta un flujo de trabajo para pull request muy efectivo por el que cuando se abre uno y se realiza un commit, genera un ejecutable que nos permite probar este antes de hacer el merge y verificar que todo es correcto. Un binario independiente al del branch de trabajo real.

BuddyBuild permite personalizar los scripts de CI para adaptarse a cualquier caso personal que tengamos. No solo eso, podremos personalizar la creación de binarios a horas concretas del día en vez de cada vez que se haga un push al repositorio, si así lo deseamos. Esto incluye también la programación para la distribución automática, así que a la hora que digamos generará el binario y lo distribuirá.

La generación de este binario realiza las firmas y prepara todo para subir a TestFlight, punto que ahora hemos de hacer manualmente pero que suponemos se automatizará al formar parte de Xcode.

Otra de las grandes ventajas de BuddyBuild es que podemos elegir diferentes versiones de iOS y dispositivos a probar, y el sistema lanzará los tests en todos ellos dando los informes correspondientes. De esta forma si algún dispositivo o versión de iOS da algún problema, sabremos exactamente el problema.

BuddyBuild además se integra con multitud de apps corporativas como Trello, Slack, JIRA o el propio portal de desarrolladores de Apple. Todo ello para enviar avisos de cuando se ha creado un binario, cuando está disponible, se ha distribuido, etc…

Pero sin duda, si todavía no os habéis quedado sorprendidos, ahora lo haréis. Si usamos la SDK de BuddyBuild en nuestra app tendremos un vídeo disponible de los últimos 15 segundos que usó nuestro usuario la app antes de un cuelgue de la misma. Además, en cualquier momento el usuario podrá hacer una captura de pantalla, anotarla y enviarla con apuntes dentro de la misma app para reporte de incidencias. Y los informes de errores, por supuesto, tendrán el código fuente exacto donde se ha producido el error, como cuando tenemos un cuelgue en local y el debugger nos señala la línea que ha provocado el problema.

El futuro para Xcode

No sabemos el tiempo que empleará Apple en incorporar estos servicios a Xcode, pero viendo el nivel de integración que tienen podemos ser optimistas y pensar que podríamos ver un adelanto en Xcode 10.

Buddy Build

¿Qué supondría para nuestro flujo de uso? Obtener ejecutables distribuidos con solo subir la versión al repositorio de código que tengamos (incluso en local si hemos habilitado esa funcionalidad), subir automáticamente las apps a TestFlight sin nuestra intervención y que los builds estén ahí disponibles y ya informados a nuestros testers.

¿Qué supondría esto en Xcode? Que la generación de binarios ya no sería cosa de Xcode, podría estar localizado en un servicio en la nube de Apple. Si esto es así, podríamos ver el primer paso hacia la distribución de apps al App Store sin tener que tener un Mac y Visual Studio para Windows u otras herramientas híbridas de otros sistemas podrían beneficiarse de poder generar los binarios y subirlos sin necesidad de usar Xcode.

Cuando generemos unas pruebas, igualmente tendremos todos nuestros tests ejecutados en todos los modelos y versiones de iOS que registremos, por lo que tendríamos un paso previo muy importante para certificar el uso de nuestra app sin tener por qué tener físicamente los dispositivos o varios con diferentes versiones del sistema.

Y en cuanto a la forma de reportar incidencias, lo que ya hemos comentado: capturas en vídeo antes del cuelgue e informes enriquecidos dentro de la propia app, además de información detallada de la línea que ha dado el error y las circunstancias del mismo.

El cambio en el ciclo productivo de desarrollo puede ser increíble y si Apple lo ofrece gratuitamente (el servicio ahora mismo solo es gratuito para 1 app y un máximo de dos dispositivos provisionados) sería un añadido sin precedentes en el llamado ciclo de vida del software y mucho más grande e importante que lo que supuso incorporar TestFlight.

¿Qué os parece esta incorporación para Xcode? Esperamos vuestras opiniones en nuestras redes sociales o en los comentarios del articulo. Compartir con el mundo, incluso desde el móvil, ya que ahora podéis compartir los artículos directamente en Telegram o Whatsapp. Un saludo y Good Apple Coding.

Fuente
BuddyBuild
Etiquetas

Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Artículos relacionados

Cerrar
Cerrar