intive Argentina Blog

Cómo potenciar el trabajo en equipo de la mano de Bitrise y Continuous Delivery

Las problemáticas más usuales del configuration manager son ampliamente conocidas. Muchas veces nos preguntamos cómo evitar romper unit tests o encontrarnos con que un cambio compiló mal. Continuous Integration y Continuous Delivery son disciplinas que nos ayudan a ordenar y gestionar procesos para solucionar o evitar diferentes errores.

Bitrise, ayudando a potenciar el trabajo en equipo

Los chicos de Android Devs no son nuevos en las oficinas de intive-FDV. En esta oportunidad, disfrutamos de una segunda charla de ellos, de la mano de Javier Marsicano. Y comenzó así:

“Tenemos 2 devs que pueden desarrollar una pantalla en 4 semanas. Si aumentamos a 4 devs, ¿logran hacerla en la mitad del tiempo?”

La respuesta se escucha al unísono, “no”. “Lamentablemente, el management cree que es así”, dice Javi. “Pero aunque no lo sea, sí estaría bueno acercarnos lo más posible, coordinar los procesos, el trabajo en equipo, potenciarnos entre nosotros”.

Bitrise, una herramienta diseñada específicamente para devs mobile, llega para brindarnos una solución automática en la aplicación de disciplinas como Continuous Integration y Continuous Delivery para apps mobile.

Una intro a Continuous Integration y Continuous Delivery

CMMI se refiere a la disciplina para la gestión de la evolución de sistemas de soft complejos.

Consiste en evaluar, coordinar, aprobar e implementar cambios en artefactos que son usados para construir y mantener sistemas de software. Se refiere a gran parte de Configuration management, pero le falta comprender un aspecto.

Como se puede ver en la imagen, los cambios que se realizan y de los cuales se hace release desde el sistema de configuration management son automáticamente controlados y monitoreados. En ambientes Agile, esto es importantísimo debido a la necesidad de cambios y builds frecuentes, a la existencia de equipos de trabajo diversos y a la intención de producir deliveries temprano que agreguen valor a los clientes. Así, se alerta de manera sistemática a los stakeholders con ítems que tienen que chequear o decisiones a tomar de acuerdo a los cambios solicitados. Resulta indispensable para establecer y mantener la integridad del producto.

CI (continuous integration) es entonces la práctica de integrar de manera compartida, todas las versiones de trabajo varias veces al día, para poder detectar fallos cuanto antes.

CD (continuous delivery) es un poco más, es un enfoque de la ingeniería de software que permite a los equipos producir software en ciclos más cortos, asegurando que sea deployable en cualquier momento. Apunta a buildear, testear y hacer release con más velocidad y frecuencia. Significa que apenas uno termina algo, debería poder entregarlo, con la idea de una automatización al máximo nivel.

¿Cómo aplicamos Bitrise?

Bitrise, como decíamos antes, nos ayuda entonces a poder implementar las prácticas de CI y CD. Viene con un montón de integraciones y plugins out of the box, para “magias específicas” (como dijo Javi) a proyectos Android, mobile en general (iOS y Flutter también).

a. Los workflows en Bitrise

Bitrise maneja workflows (flujos de ejecución de tareas y steps). Basta que falle un step para que toda la ejecución del workflow sea fallida. Se necesita un step que comunique todo, por ejemplo un canal de Slack en el cual postea Bitrise.

Puede pasar que no compile, que rompa los unit tests o, más delicado aún, sería que falle un Pull Request, como en el ejemplo de la siguiente imagen:

Cuando da rojo el workflow de development o de master, resulta gravísimo. Mientras se está en rojo puede introducirse otro nuevo issue el cual será más difícil de rastrear y resolver.

Bitrise ya trae por default un montón de steps (que se pueden modificar).

b. Los triggers en Bitrise

Ahora, si uno no quiere estar haciendo click a cada rato en un Workflow y no desea interrupciones mientras codea, puede optar por los Triggers. Eso significa definir que los steps se ejecuten cada vez que se cumplan determinadas condiciones. Existen varios tipos de Triggers:

  • Triggers de push: cada vez que se pushea a una determinada branch, se ejecuta un workflow.
  • Triggers de pull request: se disparan automáticamente cada vez que alguien abre o crea un pull request apuntando a una determinada branch.
  • Triggers por tags: se crea un tag en git, que sirve para identificar o agrupar commits o para señalar releases, entre otras cosas. Estos tags también son útiles para disparar triggers, generalmente de releases.

¿Cómo configurar Bitrise?

Para configurar Bitrise contamos con los webhooks, que son los mecanismos que se usan para comunicar Github con Bitrise. “Se trata de urls que te brinda la herramienta, en las cuales, una vez configuradas, podés seleccionar qué tipo de triggers querés utilizar”, dice Javier.

La meetup concluyó cuando probamos en vivo cómo hacer la configuración inicial y, vimos cómo implementar triggers de unit tests y de build & deploy.

Tips & Tricks / Lo que aprendimos

  • Tener la versión de los steps al día.
  • Chequear que nada esté mal tipeado.
  • Tener todo siempre en verde. Si algo está en rojo hay que arreglarlo cuanto antes.
  • El código fuente de Go está accesible si hay algo que no se entiende de los steps.
  • Todos los steps tienen acceso a variables de entorno. Si no, se sesgan. Debe estar todo centralizado.
  • Primero correr local y después recién correr el código en Bitrise.
  • Auto-incrementar la versión.
  • Para solucionar el problema de “Out of memory Exception”, se puede poner un parámetro, una línea en Bitrise.
  • Optimizar worflows y gradle (Ej: Test funcionales por cada PR). Armar steps atómicos, no más de una cosa.

Luego de agradecer a los chicos de Android Dev, nuevamente los invitamos a compartir con nosotros. ¿Quién de ustedes usó Bitrise? ¿Qué experiencia tienen?

Paula Becchetti

Paula es la editora del blog de intive – FDV. Licenciada en Comunicación Audiovisual de la Universidad Nacional de San Martín (UNSAM), se destaca como Content Manager especializada en blogs, contenido web, email marketing y social media. Su amplia experiencia en la industria del software la hace muy valiosa a la hora de traducir contenidos técnicos a un lenguaje coloquial. Según sus propias palabras: “Me conecto con el mundo por medio de la tecnología, pero también a través de todo aquello que respira, del deporte, de la música y de mis viajes”.

Deja un comentario