Cómo Desplegar tu App para Pruebas con Firebase Distribution

Juan Guillermo Gómez Torres
8 min readFeb 13, 2021

--

Firebase Distribution

Cuando terminas de desarrollar una app en Android o iOS y debes enviar un instalador al equipo de pruebas. ¿Qué prácticas haces para distribuirlo? ¿Qué haces para que el equipo de pruebas identifique el último instalador o el que está en producción? ¿Cómo comunicar los cambios o características desarrolladas en una nueva versión? ¿Cómo sabes quiénes del equipo de prueba descargaron la última versión?

¿Recuerdas cómo lo haces? ¿Sabes cómo lo harías? Tómate unos minutos antes de contestar.

Algunas prácticas que he realizado y he visto en equipos de desarrollo son la de enviar un email con el instalador y la descripción de los cambios realizados; también la de enviarlo por un canal en slack, al drive o dejarlo en un repositorio en la nube. Pero con estas prácticas no es confiable que llegue a todos los interesados de una forma segura, ni se puede versionar de forma adecuada para poder hacer pruebas de regresión.

¿Imagina una plataforma que te permita crear grupos para distribuir el instalador o pasarles un link como invitación para que puedan descargarlo? ¿Además, que en esa plataforma puedas saber quiénes descargaron el instalador, que los testers puedan descargar versiones pasadas y estar siempre informados que se liberó en una última versión? Esto y más nos brinda el servicio de Firebase Distribution.

Firebase Distribution es un servicio sin costo que permite distribuir el instalador de nuestras apps a grupos de testers con las siguientes características:

  • Funciona para iOS y Android.
  • Sencillo y rápido, no es necesario instalar SDKs.
  • Entrega inmediata de la app.
  • Nos brinda varias formas de distribuir nuestro instalador.
  • Fácil gestión de equipos de pruebas.
  • Ver quien acepta la invitación y quien la descarga.
  • Se combina con crashlytics para obtener información de la estabilidad de la app.

Ya puedes distribuir APKs y Android App bundles. Para iOS se soporta el archivo IPA.

Con Firebase Distribution podrás tener un proceso ligero de pre-release y retroalimentación. Además, nos brinda varias formas de distribución desde lo manual a una forma automatizada, eso depende de tu proceso. En este artículo vamos a detallar las diferentes formas de distribución.

Antes de usar cualquier método de distribución debes crear un grupo o los que necesites y adicionar en cada uno a los testers. Veamos cómo se hace:

En la consola web de Firebase encontrarás en el grupo de servicios de “Lanzamiento y Supervisión”, a Firebase Distribution como lo muestra la siguiente imagen:

Opción de App Distribution en la consola web de Firebase.

Luego creas los grupos en la pestaña de “Verificadores y grupos” y agregas en cada grupo los emails de quienes deseas que prueben la app. Esta es la mejor práctica, sin embargo, puedes no crear grupos y simplemente agregar los emails.

Creación de grupos y agregar emails a los grupos.

Lo anterior es una forma de adicionar los emails, pero podrías subir los emails por medio de un CSV. Ahora sí veamos qué formas existen para distribuir. Los siguientes ejemplos serán realizados para Android.

Primera forma de Distribuir — Manual

Antes de subir el instalador debes agregar la app en un proyecto de Firebase, una vez creado el grupo simplemente subes el apk firmado o debug desde la consola de Firebase, además colocas una notas de la versión y asignas los grupos.

Subiendo APK y distribuyendo de forma manual

Una vez agregas los grupos, les llega a cada miembro una invitación a su email, algo similar a la siguiente imagen.

Este email tiene un link para descargar una app de Firebase Distribution. Esta app es un gestor que permite visualizar los instaladores y todas sus versiones con sus notas.

Apps disponibles para probar

Se puede seleccionar la que deseas descargar y puedes ir a sus versiones anteriores.

Versiones del APK

Puedes observar quién abrió la invitación y quién descargó el instalador, además, de más información desde la consola web de Firebase.

Así puedes repetir estos pasos cada vez que tienes una nueva versión que vas a distribuir.

La anterior forma de distribución es la más sencilla si no tienes un flujo de integración continua, y como ves te tomará muy poco tiempo.

Segunda forma de Distribuir — Enlace de invitación

Otra forma muy sencilla de distribuir es subiendo el apk y creando un link de invitación, el cual te llevará a una página donde pones tu email y te llegará la invitación. Después sigues el mismo proceso mencionado en la primera forma de distribución. Esta forma es pertinente si desconoces los emails de los que van a probar la app o quieres invitar a varias personas a que la prueben y no deseas agregar uno a uno sus emails.

Creando un link de invitación

Comparte el link donde se podrá ingresar el email y llegará una invitación para descargar la última versión del instalador.

Link de invitación

Tercera Forma de Distribuir — Línea de comandos.

También puedes distribuir tu instalador usando Firebase CLI. Por medio de la línea de comandos puedes especificar los testers, grupos y notas, antes debes crear tu proyecto en firebase y registrar tu app. Además de autenticarte en el Firebase CLI y ejecutar el siguiente comando:

Comando en Firebase CLI para realizar la distribución.

En el comando debemos colocar la ruta del instalador a distribuir, los parámetros app que es el firebase App ID, release-notes las notas, testers si queremos listarlos separando por coma los emails o groups si queremos asignar a grupos. Para más info de los parámetros puedes verlos aquí.

Los logs que verás en la consola son los siguientes:

Logs luego de subir el instalador por consola

Cuarta Forma de Distribuir — Gradle

Otra forma de distribuir es usando el plugin en gradle de Firebase Distribution, donde podrás especificar los testers, grupos o notas en tu archivo gradle, permitiendo configurar las distribuciones para diferentes tipos de build y variantes de la app. Antes de realizar el siguiente proceso recuerda autenticarte en Firebase, ya sea por el Firebase CLI, o por medio de una tarea asociada al Firebase Distribution Plugin o con una cuenta de servicio.

Para distribuir de esta forma lo primero que debes hacer es agregar el plugin en gradle.

Luego agregas en el archivo gradle del módulo las propiedades para la distribución, ya sea en el tipo de build o si tienes flavors del producto.

Tienes la opción de colocar los emails o nombres de los grupos de forma explícita en el gradle o de una forma más configurable colocándolos en un archivo txt. Después ejecutar el comando de gradle; en este caso queremos la variante de debug, así que hacemos lo siguiente:

./gradlew assembleDebug appDistributionUploadDebug

Y tendrás la siguiente salida que nos informa que el proceso se realizó correctamente:

Using APK path in the outputs directory: app/build/outputs/apk/debug/app-debug.apk.
Uploading APK to Firebase App Distribution...
Getting appId from output of google services plugin
Using cached Firebase CLI credentials
This APK has not been uploaded before.
Uploading the APK.
Uploaded APK successfully 202
Added release notes successfully 200
Added testers/groups successfully 200
App Distribution upload finished successfully!

¡Y listo! Esta es una forma sencilla de distribuir y ya no es manual como lo hacíamos antes. Ahora solo ejecutando la tarea de gradle adecuada, tu APK estará disponible en minutos a los testers.

Quinta y Última Forma de Distribuir — Despliegue Continuo

Si tienes ya un flujo de despliegue continuo o CD (Continuos Delivery) puedes revisar si tiene algún componente para distribuir el instalador a Firebase. Si usas fastlane, en la doc de Firebase encontrarás un ejemplo de como hacerlo aquí.

Te mostraré un ejemplo con Bitrise, una plataforma como servicio para integración continua (CI) y despliegue continuo para aplicaciones móviles. Con Bitrise construyes flujos de CI y CD de una forma gráfica y sencilla, por ejemplo la siguiente imagen muestra un flujo de build:

Flujo de trabajo en Bitrise

Puedes ver que un flujo tiene un conjunto de pasos y en este caso Bitrise nos brinda un paso de Firebase Distribution, en el cual podemos configurar las propiedades de Firebase App ID, testers, grupos y notas. Bitrise ejecutará el workflow, según cómo lo tengas configurado, ejemplo cuando haces push a una rama o cuando haces un pull request, esto ya depende de tu caso de uso. De esta forma cuando haces un push a la rama test, el instalador se distribuirá a tus testers usando Firebase Distribution.

Propiedades de Firebase Distribution en Bitrise

BONUS… GitHub Actions — Despliegue Continuo

Github actions es un servicio para hacer build, test y despliegue de aplicaciones. Así que podemos hacer CD de nuestra app a firebase distribution con actions. Una forma es colocando el plugin de Firebase en nuestra app como te lo indique en la cuarta forma de distribución. Luego crea un workflow con GithHub actions con lo siguiente:

Observa que existen varios pasos que se ejecutan antes del despliegue como lo son la ejecución de ktlint y la ejecución de pruebas unitarias, sin embargo el paso que nos interesa es el que genera el apk de debug firmado y sube este a firebase distribution por medio de la tarea de gradle.

Firebase Distribution es un servicio que permite distribuir tus apps de forma sencilla y segura a los testers o un grupo de interés. Además, agiliza la retroalimentación, ya que permite a los testers descargar la última versión en minutos. También puedes realizar la distribución de diferentes formas, según las herramientas que uses o dependiendo de tu proceso. Empieza a usar Firebase Distribution y tu proceso de desarrollo será automatizado, rápido y más profesional.

Espero que esta información te sea útil. Recuerda compartir este artículo, tu comentario es siempre bienvenido.

Visita mis redes:

--

--

Juan Guillermo Gómez Torres

Tech Lead in Wordbox. @GDGCali Founder. @DevHackCali Founder. Firebase & GCPcloud & Kotlin & ODML @GoogleDevExpert . Android lover.