La aplicación móvil de Android de Sprout Social es una poderosa aplicación nativa que mantiene a nuestros clientes conectados a su presencia en las redes sociales mientras viajan. Como parte de nuestra aplicación de Android, mantenemos más de 35 dependencias administradas por la comunidad de código abierto que proporcionan componentes básicos útiles para nuestra aplicación.



Nuestras dependencias brindan innumerables funciones, como marcos para realizar llamadas de red, carga de imágenes asíncronas, herramientas de prueba y otras soluciones existentes que resuelven desafíos comunes de desarrollo de Android. Algunas de estas dependencias son necesarias para aprovechar las bibliotecas principales de Android, mientras que otras ayudan a resolver desafíos comunes de software sin tener que escribir todo el código desde cero. Cada dependencia nos permite aprovechar la funcionalidad sin tener que reinventar la rueda.



Al mismo tiempo, cada uno tiene la responsabilidad de mantenerlos actualizados para garantizar que conozcamos nuevas actualizaciones de rendimiento, seguridad y funciones. Esto suena genial en el papel, pero como cualquier desarrollador de dispositivos móviles sabe, rastrear manualmente estas actualizaciones puede ser una verdadera carga.

Uno de nuestros valores en El equipo de ingeniería de Sprout es actuar con propósito y enfoque. Con ese espíritu, decidimos implementar una solución más inteligente para poder dedicar más tiempo a crear funciones impactantes para nuestros clientes. Para lograr esto, utilizamos el complemento propio de gestión automatizada de dependencias, Dependabot. Dependabot reduce nuestro volumen de dependencias obsoletas, simplifica el esfuerzo necesario para actualizarlas y agiliza nuestro proceso de desarrollo general.


444 que significa hebreo

Alejarse del mantenimiento de dependencia manual

En el desarrollo nativo de Android, las dependencias se declaran en un archivo build.gradle. Al especificar la dependencia que necesitamos con su versión, Gradle la resolverá desde un repositorio central y la recuperará para que podamos usarla dentro de la aplicación. Si una aplicación de Android tiene varios módulos, cada módulo tiene su propio archivo build.gradle que declara las dependencias de ese módulo.

Mantener estas dependencias de manera eficiente es fundamental para un proceso de desarrollo fluido y brindar a los clientes una aplicación de administración de redes sociales efectiva que pueda mantenerse al día con la velocidad de las redes sociales. Pero mantener las dependencias actualizadas se convierte en una tarea desalentadora que requiere una evaluación del trabajo, comprobaciones de compatibilidad de versiones, posibles cambios de código y pruebas.

Antes de Dependabot, teníamos un proceso de gestión de dependencias manual. A medida que aumentó la complejidad de nuestra aplicación, también aumentó el tiempo dedicado a la gestión de dependencias. Al equipo le costó un gran esfuerzo identificar la necesidad de una dependencia y luego procesarla a través de nuestros ágiles flujos de trabajo de desarrollo para priorizarla y actualizarla. A menudo descubríamos que las dependencias necesitaban actualizaciones durante el desarrollo de funciones, lo que introdujo el siempre temido cambio en el alcance del proyecto. Necesitábamos una mejor manera.



Presentamos: Dependabot

La gestión de la dependencia no es un concepto nuevo. Dado que la mayor parte del trabajo necesario para gestionar las dependencias es repetitivo y monótono, nuestro equipo pensó que este sería el candidato perfecto para algo que pudiera automatizarse (sin caer en la trampa de tener que escribir la automatización nosotros mismos).

Descubrimos que Dependabot se adaptaba bien a nuestras necesidades: es una herramienta propia de GitHub que detecta automáticamente versiones más nuevas de dependencias y tiene en cuenta cualquier problema de compatibilidad que pueda surgir al actualizarlas. Muestra cualquier actualización de versión a medida que esté disponible y crea solicitudes de extracción (PR) que contienen información sobre la actualización, que pudimos integrar perfectamente en nuestro flujo de trabajo de ingeniería normal. De repente, no tuvimos que pasar largas horas manualmente asegurándonos de que todo estuviera actualizado.


Número 526

Implementación

Dependabot analiza de forma inteligente nuestros archivos build.gradle para determinar nuestro árbol de dependencias y crea relaciones públicas para cualquier dependencia que deba actualizarse. Para que la implementación fuera un éxito, necesitábamos una manera de revisar cuidadosamente cada RP y agilizar las fusiones de los RP.



  Un gráfico del árbol de decisión que utiliza Dependabot para identificar las dependencias que deben actualizarse.

Durante cualquier lanzamiento de nuestra aplicación de Android, asignamos un administrador de lanzamiento. Decidimos integrar esta responsabilidad en el proceso del administrador de versiones, con la expectativa de completar hasta cinco actualizaciones de dependencia durante cada ciclo de versión. El administrador de versiones revisa las actualizaciones de dependencia descubiertas por Dependabot, se asegura de que nuestras pruebas de integración continua en el PR pasen y no haya cambios importantes en la biblioteca, luego revisa las actualizaciones proporcionadas por este aumento de versión y presenta la lista de PR al equipo para su aprobación. para fusionarse.

Los beneficios de la automatización

La gestión automatizada de dependencias es una herramienta poderosa que mejora significativamente nuestro proceso de desarrollo y la calidad de vida de nuestros ingenieros. También proporciona a los usuarios un alto valor y las últimas funciones dentro de nuestra aplicación móvil nativa. Con una herramienta como Dependabot, optimizamos la recuperación, integración y control de versiones de dependencias, reduciendo la cantidad de esfuerzo manual que los ingenieros tienen que realizar y disminuyendo la posibilidad de conflictos en nuestro árbol de dependencias.

A medida que la complejidad de los proyectos de Android continúa creciendo, la adopción de la gestión de dependencias automatizada fue un paso de gran valor para garantizar un proceso de desarrollo de clase mundial para nuestro equipo y una aplicación de Android de clase mundial para nuestros clientes.

Para obtener más información sobre el equipo de ingeniería y la cultura de Sprout, visita nuestro sitio de carreras .

Compartir Con Tus Amigos: