L'application mobile Android de Sprout Social est une application native puissante qui permet à nos clients de rester connectés à leur présence sur les réseaux sociaux lors de leurs déplacements. Dans le cadre de notre application Android, nous maintenons plus de 35 dépendances gérées par la communauté open source qui fournissent des éléments de base utiles pour notre application.



Nos dépendances fournissent une myriade de fonctionnalités telles que des cadres pour passer des appels réseau, le chargement d'images asynchrones, des outils de test et d'autres solutions existantes qui résolvent les défis courants de développement Android. Certaines de ces dépendances sont nécessaires pour exploiter les principales bibliothèques Android, tandis que d'autres aident à résoudre des problèmes logiciels courants sans avoir à écrire tout le code à partir de zéro. Chaque dépendance nous permet d'exploiter les fonctionnalités sans avoir à réinventer la roue.



Dans le même temps, chacun a la responsabilité de les maintenir à jour afin de garantir que nous sommes informés des nouvelles mises à jour de performances, de sécurité et de fonctionnalités. Cela semble bien sur le papier, mais comme tout développeur mobile le sait, le suivi manuel de ces mises à jour peut être un véritable fardeau.


la numérologie du 11 septembre

Une de nos valeurs sur L'équipe d'ingénierie de Sprout est d’agir avec détermination et concentration. Dans cet esprit, nous avons décidé de mettre en œuvre une solution plus intelligente afin de pouvoir consacrer plus de temps à créer des fonctionnalités percutantes pour nos clients. Pour ce faire, nous avons utilisé le plugin propriétaire de gestion automatisée des dépendances, Dependabot. Dependabot réduit notre volume de dépendances obsolètes, simplifie les efforts nécessaires pour les mettre à jour et rationalise notre processus de développement global.

S'éloigner de la maintenance manuelle des dépendances

Dans le développement Android natif, les dépendances sont déclarées dans un fichier build.gradle. En spécifiant la dépendance dont nous avons besoin avec sa version, Gradle la résoudra à partir d'un référentiel central et la récupérera pour que nous puissions l'utiliser dans l'application. Si une application Android est multi-module, chaque module possède son propre fichier build.gradle qui déclare les dépendances de ce module.

Le maintien efficace de ces dépendances est essentiel pour un processus de développement fluide et pour fournir aux clients une application de gestion des médias sociaux efficace, capable de suivre la vitesse des réseaux sociaux. Mais maintenir les dépendances à jour devient une tâche ardue qui nécessite une évaluation du travail, des vérifications de compatibilité des versions, des modifications potentielles du code et des tests.

Avant Dependabot, nous avions un processus de gestion manuelle des dépendances. À mesure que la complexité de notre application augmentait, le temps consacré à la gestion des dépendances augmentait également. Il a fallu des efforts considérables à l'équipe pour identifier le besoin d'une dépendance, puis la traiter via nos workflows de développement agiles pour la hiérarchiser et la mettre à jour. Nous découvrions souvent que les dépendances nécessitaient des mises à jour lors du développement des fonctionnalités, ce qui introduisait la dérive toujours redoutée de la portée du projet. Nous avions besoin d’une meilleure façon.



Présentation : Dependabot

La gestion des dépendances n'est pas un concept nouveau. Étant donné que la plupart du travail requis pour gérer les dépendances est répétitif et monotone, notre équipe a pensé que ce serait le candidat idéal pour quelque chose qui pourrait être automatisé (sans tomber dans le piège de devoir écrire nous-mêmes l'automatisation).


3 en numérologie

Nous avons trouvé que Dependabot répondait bien à nos besoins : il s'agit d'un outil propriétaire de GitHub qui détecte automatiquement les versions plus récentes des dépendances et prend en compte tous les problèmes de compatibilité pouvant être causés par leur mise à niveau. Il fait apparaître toutes les mises à niveau de version dès qu'elles sont disponibles et crée des demandes d'extraction (PR) contenant des informations sur la mise à niveau, que nous avons pu intégrer de manière transparente dans notre flux de travail d'ingénierie normal. Du coup, nous n’avons plus eu à passer de longues heures manuellement à nous assurer que tout était à jour.

Mise en œuvre

Dependabot analyse intelligemment nos fichiers build.gradle pour déterminer notre arbre de dépendances et crée des PR pour toutes les dépendances qui doivent être mises à jour. Pour que la mise en œuvre soit un succès, nous avions besoin d'un moyen d'examiner attentivement chaque PR et de rationaliser les fusions des PR.



  Un graphique de l'arbre de décision que Dependabot utilise pour identifier toutes les dépendances qui doivent être mises à jour.

Lors de toute sortie d'application de notre application Android, nous attribuons un responsable de version. Nous avons décidé d'intégrer cette responsabilité dans le processus du gestionnaire de versions, en espérant que jusqu'à cinq mises à niveau des dépendances soient effectuées au cours de chaque cycle de publication. Le gestionnaire de versions examine les mises à jour de dépendances découvertes par Dependabot, s'assure que nos tests d'intégration continue sur le PR réussissent et qu'il n'y a pas de modifications majeures de la bibliothèque, puis examine les mises à niveau fournies par cette version et apporte la liste des PR à l'équipe pour approbation. à fusionner.

Les avantages de l'automatisation

La gestion automatisée des dépendances est un outil puissant qui améliore considérablement notre processus de développement et la qualité de vie de nos ingénieurs. Il offre également aux utilisateurs une grande valeur et les dernières fonctionnalités de notre application mobile native. Avec un outil comme Dependabot, nous avons rationalisé la récupération, l'intégration et la gestion des versions des dépendances, réduisant ainsi la quantité d'efforts manuels que les ingénieurs doivent consacrer et réduisant les risques de conflits dans notre arbre de dépendances.

Alors que la complexité des projets Android continue de croître, l'adoption d'une gestion automatisée des dépendances était une étape de grande valeur afin de garantir un processus de développement de classe mondiale pour notre équipe et une application Android de classe mondiale pour nos clients.

Pour en savoir plus sur l’équipe d’ingénierie et la culture de Sprout, visitez notre site carrières .

Partage Avec Tes Amis:


importance de 27