Distribución continua Ad-Hoc de una aplicación iOS con Bitrise

Bitrise es un sistema de integración continua y distribución continua.

¿Que es un sistema de integración continua?

La integración continua es una practica de desarrollo que permite comprobar frecuentemente que el trabajo desarrollado es completamente funcional.
Esto significa comprobar si el código compila y si los tests pasan correctamente.
En caso de que el proyecto no compile o los tests no pasen el sistema de integración continua notifica inmediatamente al equipo que hay un problema.
Con esto conseguimos detectar problemas mucho antes que si ejecutásemos los test de forma manual y al mismo tiempo nos asegura que el código que hemos subido al repositorio funciona.

¿Que es un sistema de distribución continua?

Un sistema de distribución continua compila el código desarrollado y lo distribuye a los entornos de pre-producción o producción de forma automática.
Esto mejora la eficiencia ya que normalmente el distribuir una versión nueva se hace de forma manual y requiere bastante tiempo.

Sistemas de integración/distribución continua más popoulares

  • Bitrise
  • Jenkins
  • TravisCI
  • Bamboo

Introducción a Bitrise

En nuestro caso vamos a ver como utilizar Bitrise como sistema de distribución continua de una aplicación iOS para distribución de IPAs Ad-Hoc teniendo el código subido a GitHub (se pueden utilizar otros repositorios Git como Bitbucket GitLab).

Bitrise permite crear “Workflows” donde encadenar diferentes “Steps” uno detrás de otro.

Se podría, por ejemplo, ejecutar primero los tests de nuestra aplicación y si los test pasan distribuir la aplicación y si no pasan no hacerlo ya que estaríamos distribuyendo una aplicación inestable.

Workflow Example

El “Workflow” lo tenemos visualmente como una cadena de pasos, pero en realidad se esta generando un fichero YML en el cual podríamos hacer cambios o copiar parte de nuestros “Steps” para llevarlos a otros “Workflows” fácilmente.

Distribución Ad-Hoc

Tras esta breve introducción a Bitrise vamos a ver como se distribuiría una aplicación iOS en modo Ad-Hoc.

A partir de este punto se asume que se tiene conocimiento sobre los diferentes tipos de Certificados y Provisioning Profiles para distribución de aplicaciones de Apple.

Vamos a crear un “Workflow” para distribución de aplicaciones Ad-Hoc. Para ello vamos utilizar la forma más sencilla que tiene Bitrise para hacerlo que es utilizando sus propios “Steps”. Esto nos obliga a tener configurado correctamente el proyecto de Xcode. También existe la posibilidad de generar el IPA utilizando Fastlane.

En nuestro caso tenemos desactivado el Automatic Signing en nuestro “Target” -> “General”.

Automatically manage signing

En “Target” -> “Build Settings” -> “Signing” -> “Provisinong Profile” -> “Release” seleccionamos nuestro Provisioning Profile Ad-Hoc (generado previamente en developer.apple.com).

Provisioning Profile

 

Con estos cambios subidos a nuestro GitHub ya podemos pasar a configurar Bitrise. Lo primero de todo es crearnos una cuenta en Bitrise, lo que nos dará 14 días de prueba.

Una vez conectados con nuestro usuario en “Account” -> “Settings” podremos dar acceso a GitHub para que Bitrise pueda conectarse a nuestro repositorio.

Connect Github Account

Creamos una nueva app en la página principal de Bitrise.

Add new app Bitrise

– Seleccionamos nuestro repositorio

– Añadimos de forma automática una clave SSH para dar acceso al repositorio

– Seleccionamos una rama por defecto donde además Bitrise hará las comprobaciones necesarias

Add new app steps

Dejamos que valide el proyecto de forma automática. Tardara unos minutos

Valitating Bitrise

Ahora Bitrise nos permite elegir que tipo de distribución queremos, en nuestro caso Ad-Hoc. Esto nos dejara ya un “Workflow” configurado por defecto para lo que queremos hacer.

AdHoc default config

Pulsamos sobre “Skip the Webhook registration”. Esto es útil si queremos utilizar Bitrise para pasar los tests que tengamos desarrollados en nuestro proyecto en cada Push a nuestro repositorio y además utilizarlo como “Status” en nuestros Pull Request pudiendo bloquear el merge de código a la rama principal si Bitrise no es capaz de pasar los tests.
Por ahora no lo vamos a utilizar.

Ahora vamos a nuestro “Workflow”, por defecto se llama “primary”, podemos cambiar el nombre. Vamos a llamarlo “Deploy-Ad-Hoc” para evitar confusiones cuando tengamos más “Workflows” creados.

Code Signing

Previamente deberíamos:
– Generar un Certificado de Distribución en el portal de desarrollo de Apple.
– Exportar el Certificado de Distribución desde el Keychain de nuestro equipo.
– Crear un Mobile Provisioning Ad-Hoc en el portal de desarrollo de Apple con todos los dispositivos registrados donde querramos instalar nuestra aplicación.

Ahora vamos a la sección de “Code Signing” en nuestro “Workflow”.
En esta sección tenemos que subir el certificado p12 de distribución y también el Mobile Provisioning Ad-Hoc.

Code signing

Dentro de nuestro workflow tenemos el paso “Deploy bitrise” que es el que se encarga de distribuir la aplicación.
En la sección “Notify emails” podremos añadir los correos de las personas que tengan los dispositivos que tenemos dados de alta en nuestro Mobile Provisioning Ad-Hoc para que reciban el IPA y lo puedan instalar en sus dispositivos.

Con esto ya debería estar todo preparado. Y podríamos empezar a ejecutar nuestro “Workflow”.
Para ejecutarlo existen dos formas de hacerlo, automática y manual.

Automáticamente requiere de un disparador que lo lance. Bitrise permite ejecutar “Workflows” cuando:
– Se pushea un nuevo commit a nuestro repositorio (se podría especificar la rama)
– Se lanza un nuevo Pull Request
– Se crea un tag

Bitrise Triggers

Dependiendo de para que queramos distribuir estos Ad-Hoc deberíamos ejecutar nuestro Workflow en un momento u otro o incluso tener varios Workflows para distribuir el binario a QAs o al equipo de ventas

Manualmente, en nuestro “Workflow” tenemos un botón “Start/Schedule a Build” donde nos podremos seleccionar la rama y el Workflow que queremos utilizar. Si pulsamos sobre “Advanced” nos permitiría especificar el hash de un commit o incluso veremos un commando CURL para ejecutar el trabajo directamente desde la linea de comandos lo que nos permitiría, por ejemplo, tener un comando CRON que se ejecute periódicamente.

Start Build

Con esto ya podemos empezar a distribuir de forma completamente automática nuestros IPAs dentro de nuestro equipo de forma rápida y sencilla.

 

Artículos Relacionados

Integración continua de proyectos Android con Bitrise
Integración Continua rápida y sencilla con GitLab CI

Vídeo Relacionado

Deja un comentario

Responsable » Solidgear.
Finalidad » Gestionar los comentarios.
Legitimación » Tu consentimiento.
Destinatarios » Los datos que me facilitas estarán ubicados en los servidores SolidgearGroup dentro de la UE.
Derechos » Podrás ejercer tus derechos, entre otros, a acceder, rectificar, limitar y suprimir tus datos.

¿Necesitas una estimación?

Calcula ahora