Lo cierto es que para poder tener una mejor comprensión de la importancia que tiene la integración continua(CI) es fundamental hablar antes sobre algunos de los problemas que suelen presentarse cuando no se utiliza este tipo de integración. Cuando los desarrolladores no utilizan la integración continua es necesario coordinar y comunicar de forma manual todo el proyecto cuando se está trabajando con código para mejorar el producto final. En realidad, este tipo de coordinación va más allá de los equipos de desarrollo y de organización. En estos casos, los equipos de productos tienen que coordinarse para poder lanzar secuencialmente ciertas actualizaciones, arreglos o características, así como los miembros del equipo que son responsables del proyecto.

El motivo por el que se valora tanto la importancia de la integración continua es porque al prescindir de esta se provoca una sobrecarga de comunicación en el entorno haciendo el trabajo mucho más complejo, pudiendo llegar a ocasionar confusiones y otros problemas dentro del proyecto. Estos problemas pueden llegar a ocasionar un lanzamiento del código más lento y con más errores, ya que el equipo de desarrolladores tiene que ser más reflexivo sobre las integraciones que se llevan a cabo de forma manual. Todos estos riesgos van creciendo conforme va aumentando el tamaño del equipo y la base del código que se utiliza.

Lo cierto es que cuando no se cuenta con una canalización de la integración continua se puede presentar una desconexión entre la organización y el equipo de desarrollo. Es por este motivo por el que la comunicación entre desarrollo y producto puede volverse un gran problema cuando no se toman las medidas adecuadas.

¿Qué es la integración continua?

Tal y como hemos mencionamos anteriormente, la integración continua ha supuesto un gran cambio en el proceso que se sigue para desarrollar las aplicaciones. Esto se debe a la gran cantidad de herramientas que existen hoy en día y al hecho de que los desarrolladores las utilizan para poder crear sus apps. Conforme los ciclos de desarrollo se van acelerando cada vez más, el tiempo que se tiene para implementar las aplicaciones o los ciclos de entrega se hacen cada vez más cortos. Las empresas están acostumbradas a liberar sus aplicaciones de forma trimestral o mensual, pero lo cierto es que gracias a las herramientas que se tienen disponibles hoy en día esto se puede hacer semanalmente o incluso diariamente.

El código no está libre de errores, pero lo cierto es que el proceso que se utilice para la detección y corrección de estos errores de código tiene un gran impacto. Esto ha hecho que aumenten las necesidades de automatización en cuanto a la integración, la entrega y el despliegue, de forma que ahora en la gran mayoría de las situaciones, las aplicaciones se pueden actualizar más rápido y de forma más fácil sin que los usuarios tengan que hacer nada. De esta forma, podemos decir que la integración continua se enfoca en combinar el trabajo de los distintos desarrolladores, haciéndose todos los días para poder detectar así los errores de una forma más sencilla. De este modo, se puede ayudar a desarrollar la aplicación de forma que pueda estar lista en cualquier momento para ser lanzada.

Así, la integración continua es un proceso de automatización por medio del cual los cambios que se lleven a cabo se implementan de forma constante por medio de la canalización.

Importancia de la integración continua

Como hemos mencionado anteriormente, hoy en día hay una gran cantidad de herramientas de integración continua que sirven de gran ayuda para poder automatizar todo este proceso. En realidad, hay una gran cantidad de motivos por los que se debería de invertir en el uso de una de estas herramientas, comenzando por el hecho de que son muy efectivas para reducir los errores de software, evitando riesgos de factorización y la reducción de costes que son producidos por dichos fallos. También podemos destacar el hecho de que la integración continua permite mejorar la velocidad de desarrollo y la velocidad de los ciclos de integración.

Hay una gran cantidad de motivos por los que deberías tener en cuenta el hecho de utilizar una herramienta de integración continua, pero también hay muchos aspectos que debes tener en cuenta para poder elegir la herramienta que se ajuste mejor a tus necesidades, como el tipo de alojamiento, sus características, el soporte técnico, la integración con otras herramientas y su precio.

¿Cuáles son las ventajas de utilizar la integración continua?

Hasta este punto ya hemos hablado de algunas de las ventajas principales de la integración continua, pero para que no quede ninguna duda al respecto ahora nos encargaremos de resaltar las ventajas principales que deberías considerar:

  • Detectar errores de forma más ágil y eficaz: esto hace que todo el proceso para poder corregir errores sea mucho más barato y se pueden tener compilaciones reproducibles y conseguir una mejor consistencia
  • La aplicación funciona en cualquier entorno siempre bajo las mismas condiciones. De esta forma, es posible evitar la famosa “contaminación de compilación” o tener la compilación con parámetros en condiciones específicas.
  • Es muy útil para poder automatizar la entrega.

Integración continua con Bitrise

Desde su inicio, enfocado en iOS, Bitrise es una herramienta que está centrada en poder llevar a cabo una integración continua de aplicaciones móviles, para lo que tiene en cuenta una enorme cantidad de integraciones con otros servicios y herramientas de terceros. Todo esto es necesario para poder garantizar una mayor sencillez en todo el proceso. Cuando se ha agregado el soporte para Xamarin es posible llevar a cabo los trabajos de testing, compilación y distribución de aplicaciones con Bitrise.

Es importante que tengas en cuenta que, al igual que como sucede con otros servicios, Bitrise está basado en un modelo de suscripción mensual o anual y cuenta con distintos planes y rangos de precio. Puedes utilizar la versión gratuita con la que se permiten hasta 200 builds mensuales y con más de 100 integraciones en cuanto a servicios de terceros. Debes de tener en cuenta que la mayor limitación con la que podrás encontrarte es que solo permite la compilación de una aplicación de forma simultánea a menos que tengas las suscripciones para For Teams o Enterprise

bitrise_price

Los planes que ofrece Bitrise

     ¿Qué es Bitrise?

En pocas palabras, Bitrise es una herramienta de integración y entrega continua con un enfoque principal en el desarrollo de aplicaciones móviles (iOS, Android, Xamarin, Ionic, React, Cordova y Flutter). Es posible automatizar las pruebas y la implementación de todas las apps realizando una pequeña cantidad de clics. Las compilaciones se ejecutan dentro de una marca. También podemos destacar el hecho de que permite integrarse con otras herramientas y servicios, entre los cuales podemos destacar:

  • GitHub
  • Gitlab
  • Slack
  • Bitbucket
  • Amazon S3
  • JIRA
  • Ruby
  • Grade.
  • TestFlight
  • Apache
  • AWS Device
  • Farm
  • HipChat
  • Parse
  • Xamarin
  • Mailgun

Estas son solo algunas de las herramientas principales, ya que cuenta con integración con más herramientas y servicios. Como puedes ver, realmente es una opción bastante efectiva.

     Cómo se lleva a cabo la integración continua con Bitrise

Ya establecimos que la integración continua sirve para poder llevar a cabo integraciones automáticas de un proyecto de la forma más rápida y constante posible, pudiendo detectar errores y otros fallos. Cuando hablamos de integración de compilación nos referimos a la ejecución de pruebas. A esto hay que agregar un término conocido como CD (continuous deployment) o despliegue continuo, es un enfoque que permite a los equipos producir software en menos tiempo, asegurando que se pueda desplegar en cualquier momento, Lo que significa que una vez termine el CI, debería ser desplegada de forma automática.

bitrise_ flow

En estos escenarios, el flujo del proceso que se sigue es el siguiente:

  1. El programador trabaja con su equipo de desarrollo pudiendo subir los cambios al repositorio del código,
  2. Automáticamente Bitrise podrá tener acceso al código desde el repositorio
  3. Bitrise se encarga de compilar, ejecutar los tests, recopilar información de los resultados, y firmar la aplicación
  4. Los resultados los obtiene el desarrollador y así puede analizarlos para poder seguir trabajando en él de una forma más efectiva.
  5. Dependiendo de como este configurado Bitrise, puede desplegar directamente una versión de release o una versión de prueba, evitando así las instalaciones manuales en dispositivos

El proceso es realmente sencillo y efectivo, siendo este el motivo principal por el que cada vez más desarrolladores optan por utilizar este tipo de herramientas.

     Cómo conectar un repositorio con Bitrise

Lo primero que hay hacer es entrar y registrarse en Bitrise, una vez que estemos registrados desde el Dashboard > Add New App.

  • Seleccionamos la configuración de privacidad de su aplicación: puede ser pública o privada.
  • Bitrise ofrece opciones para conectar con cualquier tipo de repositorio Git. GitHub, GitLab y Bitbucket son compatibles de fábrica. Si ya nos hemos autorizado en Bitrise, por ejemplo, con su GitHub, veremos que Bitrise enumera automáticamente todos sus repositorios, por lo que puede hacer clic en el que desea conectar.
  • Podemos conectar cualquier repositorio Git privado o público a Bitrise, creando automáticamente una clave SSH que puede usarse para configurar la conexión con su proveedor. Si no se ha autorizado Bitrise contra el proveedor del repositorio, nos pedirá permiso.
  • Ingresamos el nombre de la rama del repositorio donde se encuentra su proyecto. Esta rama debe incluir un proyecto configurado. Una vez que presionemos Siguiente, se inicia automáticamente la validación del repositorio. Durante la validación, Bitrise se asegura de que tenga acceso a la rama dada, utilizando la clave SSH que configuró.
  • Una vez que finaliza la configuración del proyecto, seleccionamos el método de exportación del IPA (ad-hoc, apple-store, development, enterprise)
  • Podemos agregar un ícono de aplicación o pasar al siguiente paso
  • Bitrise nos ofrece la oportunidad de registrar inmediatamente un webhook en su repositorio. Después de configurar el webhook, cualquier cambio de código en su repositorio activará el flujo de trabajo primario creado automáticamente de forma predeterminada. Recomiendo no configurarlo por el momento.

 

configurar bitrise

     Cómo definir un Workflow

Bitrise maneja workflows (flujos de ejecución de tareas), Estos son los flujos de tareas que se ejecutaran en el orden definido. La forma más fácil de crear, definir y modificar un workflow es usando el editor gráfico en bitrise.io. Una vez añadido nuestro proyecto, se crea dos workflows por defecto (primary, deploy) que podemos clonar o modificar, tal y como aparecen en la imagen siguiente

bitrise workflow

En el workflow por defecto de deploy ya tiene configurado: 

  • Clonar el repositorio – Instalar los pods 
  • Ejecutar los tests del proyecto 
  • Crear Archive 
  • Deploy 

Para recibir la versión directamente a nuestro email tenemos que ir a la tarea de “Deploy to bitrise” en el apartado de Notify:Emails

bitrise notify

     Agregar certificado y provisioning profile

Todos los que ya han trabajado con iOS conocen muy bien el proceso de firmado de una aplicación iOS.  Para configurar los certificados y provisioning, que vayamos a utilizar, tenemos que ir a Workflow Editor, y desde allí a la pestaña de Code Signing

bitrise signingTenemos que asegurarnos que nuestra aplicación tenga el mismo certificado y provisioning, para que bitrise pueda crear él archive correctamente

     Cómo ejecutar el Workflow

Como último paso solo tenemos que lanzar la ejecución del workflow definido. Bitrise nos da la opción de crear disparadores(triggers), que nos sirven para lanzar algún workflow automáticamente dependiendo que algún cambio que detecte en el repositorio como Push, Pull Request, Tag.

bitrise triggers

Para hacerlo de forma manual lo podemos hace desde Start/Schedule a Build

bitrise start

     Cómo usar Bitrise en el pipeline de GitLab

El pipeline o .gitlab-ci.yml, son muy comunes términos en el uso de GitLab como repositorio. Imaginemos el caso que queremos lanzar un workflow cada vez que sé creamos un “Merge request”, pero no queremos hacerlo por cada “commit”, o queremos que se pueda hacer de forma manual para ahorrar ejecuciones en bitrise, pero a su vez queremos hacerlo desde el mismo pipeline de GitLab, y así este se entere si el workflow termina correctamente o falla. En este caso tenemos que crear en la raíz de nuestro proyecto un archivo de configuración .gitlab-ci.yml como este

Este archivo de configuración crea dos tareas separadas (build app, bitrise version) para lanzar de forma manual los workflows primary o deploy desde nuestro GitLab. Debemos cambiar las variables, {App slug}, {Build Trigger token}, que las encontraremos en workflow, la pestaña de “{} Code”

bitrise code settings

y {Personal access token}, este token tendremos que generarlo desde Account Settings>Security> Generate new token

bitrise settings

A partir de aquí ya podremos lanzar los workflows directamente desde nuestros “Merge request” cada vez que queramos

pipeline gitlab

Otras herramientas para aprovechar la integración continua

Además de Bitrise hay una gran cantidad de herramientas que permiten aprovechar los beneficios de la integración continua, como:

  • Jenkins
  • CircleCI
  • TravisCI
  • TeamCity

Conclusiones

Pudimos ver que Bitrise es una solución bastante simple y económica que nos permite aprovechar los beneficios de la integración continua y el despliegue continuo. Nos permite tener una cuenta gratis y 14 dias de prueba con una cuenta de desarrollador.

Para cada aplicación, puede configurar nuestro propio flujo de trabajo con tareas. Es como LEGO, puedes crear tu propio workflow muy fácilmente. También puedes enlazar varios workflows uno seguido del otro.

Bitrise tiene un buen soporte y una comunidad, con lo que podrás pedir ayuda si existe algún problema, y también puedes intentar pedir que te envíen algunos stickers si lo deseas 🙂 .

Sabemos que existen muchas herramientas que permiten aprovechar los beneficios de la integración continua, pero algunas de ellas son muy costosas, o tenemos que configurarlo nosotros mismos, que para una persona sin mucho conocimiento en ello puede resultar bastante complejo, en esto la integración continua Bitrise tiene una ventaja, ya que la configuración es bastante simple

Pero no todo puede ser perfecto, así que el lado negativo seria que la cuenta gratis solo te da 30 minutos por ejecución, que para un proyecto grande en Swift es bastante fácil tener más de 30 minutos en complicar el proyecto más ejecución de los tests y crear un Archive. Un buen consejo para solucionarlo es crear workflow pequeños, y luego enlazarlo entre ellos en una secuencia 

Yo recomiendo Bitrise como solución CI de un desarrollo móvil


¿Qué te pareció el artículo? ¿Te gustaría dejarme comentario? Ah, y si te ha gustado no te olvides de compartirla 😄