Simplifiez les mises à jour des dépendances avec Mergify et Snyk
23 août 2023
0 minutes de lectureLa gestion des dépendances d’un projet exige des efforts constants et une attention soutenue. Vous vous êtes sûrement déjà préoccupé des points suivants en maintenant un projet :
Une dépendance propose de nouvelles versions pour ajouter une fonctionnalité ou corriger un bug.
Une dépendance comporte des vulnérabilités de sécurité et des correctifs sont disponibles dans de nouvelles versions.
Rester à jour avec les versions des dépendances pour éviter un code obsolète.
Heureusement, nous avons pu automatiser en partie la gestion des dépendances à l’aide de bots GitHub et de solutions comme Dependabot et GreenKeeper.
Cependant, ces bots automatisent principalement la création d’une pull request qui propose les modifications à apporter. La fusion de chacune reste une opération manuelle qui nécessite une attention particulière pour éviter de fusionner une pull request qui fait échouer l’intégration continue.
Quoi de mieux que d’automatiser les mises à jour des dépendances ? Automatiser leur fusion.
Qu’est-ce que Mergify ?
Mergify est un outil puissant et innovant conçu pour automatiser vos workflows GitHub. Vous pouvez ainsi vous concentrer davantage sur la création de logiciels de qualité et moins sur les tâches administratives fastidieuses. Mergify est avant tout un service d’automatisation des pull requests qui vous aide à créer des workflows personnalisés selon les conditions que vous définissez. Il peut notamment fusionner, fermer, commenter, examiner, étiqueter, transférer, rétroporter et rebaser automatiquement des pull requests, et bien plus encore.
Une fois configuré, Mergify prend en charge certaines des tâches les plus fastidieuses de la revue de code et de la gestion de projet. Il contribue à préserver la propreté de votre dépôt, garantit que votre branche master reste verte et réduit le temps perdu à gérer manuellement des processus automatisables.
Dans la section suivante, nous vous montrerons comment tirer parti de Mergify pour que les mises à jour de vos dépendances deviennent un jeu d’enfant.
À propos des PR de mise à niveau des dépendances Snyk
Vous voulez rester à jour en matière de correctifs de vulnérabilités et éviter les dépendances obsolètes ? C’est là que Snyk intervient.
Snyk est une plateforme de sécurité conçue pour les développeurs, qui leur permet de prendre en charge la sécurité de leurs applications. Snyk est réputé pour ses capacités d’analyse des vulnérabilités, mais propose également une expérience fluide de gestion des mises à jour des dépendances, notamment grâce à ses pull requests automatisées.
Comment fonctionnent les PR de mise à niveau des dépendances de Snyk ? À intervalles réguliers, Snyk vérifie automatiquement si des mises à jour sont disponibles pour les dépendances de vos projets. Lorsqu’une version plus récente est détectée, Snyk crée directement une pull request contenant les modifications nécessaires dans votre dépôt GitHub. Celle-ci fournit des informations détaillées sur la mise à niveau, notamment l’historique des versions de la dépendance et la date de publication de la dernière version, afin de vous permettre d’examiner les changements en détail avant de les fusionner.

Pour commencer
Pour commencer, il vous suffit de suivre quelques étapes simples :
Choisissez l’un de vos dépôts de code GitHub pour y installer le workflow automatisé de mise à niveau et de fusion des dépendances.
Créez un compte Mergify et invitez l’application GitHub Merigy dans votre dépôt.
Créez un compte Snyk et connectez-y votre dépôt GitHub.
Activez les mises à niveau automatiques des dépendances avec Snyk
Ouvrez l’application Snyk, poursuivez votre inscription si nécessaire, puis connectez le dépôt que vous souhaitez automatiser en important un dépôt GitHub. Accédez à la page Projects dans l’interface Snyk, sélectionnez Add projects, choisissez les dépôts de code à importer dans Snyk, puis cliquez sur Add selected repositories.

Une fois le projet importé, activez les PR de mise à niveau des dépendances avec Snyk en sélectionnant Settings, puis Integrations et GitHub :

Faites ensuite défiler la page jusqu’à la section de configuration Automatic dependency upgrade PRs, puis activez la fonctionnalité :

Maintenant que le bot Snyk ouvre automatiquement des pull requests pour mettre à niveau les dépendances du projet, accédons à la configuration de Mergify pour automatiser leur fusion.
Créer une règle de fusion automatique dans Mergify
Connectez-vous à Mergify avec votre compte GitHub, comme vous l’avez fait avec Snyk, puis ajoutez les dépôts que vous souhaitez gérer avec Mergify.
Pour modifier les dépôts Git que vous souhaitez gérer avec Mergify, vous serez redirigé vers la page des applications GitHub, où vous pourrez les sélectionner dans le menu déroulant :

Une fois les dépôts à associer à Mergify sélectionnés, cliquez sur le bouton Save.
Nous devons ensuite configurer la règle de fusion pour notre projet. La configuration des fusions se fait dans le fichier .mergify.yml, à la racine du dépôt. Conseil : vous pouvez aussi placer le fichier dans le répertoire .github/, à côté des autres workflows et configurations liés à l’intégration continue.
Le fichier de configuration YAML de Mergify se compose des éléments suivants :
Files de fusion : files dans lesquelles les PR sont placées en attente de fusion, l’une après l’autre dans votre branche principale, sans provoquer de conflits de fusion ni de régressions.
Règles de pull request : comme leur nom l’indique, un ensemble de conditions permettant de valider les pull requests puis d’effectuer des actions, par exemple les placer dans une file de fusion.
Voici un exemple simple :
La configuration ci-dessus fusionnera la pull request si la condition est remplie, c’est-à-dire si au moins un relecteur l’approuve.
Sans Mergify, un relecteur peut approuver très rapidement les modifications apportées par une pull request, mais il doit ensuite attendre que tous les contrôles d’intégration continue réussissent — ou que la personne à l’origine de la pull request confirme que son approbation signifie qu’elle est prête à être fusionnée. La fusion reste une action manuelle.
Avec les conditions ci-dessus et Mergify, la pull request est automatiquement fusionnée dans la branche principale dès qu’une revue l’approuve.
Fusionner automatiquement les pull requests de mise à niveau Snyk
Ajoutons la même automatisation aux pull requests Snyk qui mettent à niveau les dépendances. Voici à quoi ressemblera le contenu de notre configuration Mergify :
Examinons cette configuration pour comprendre ce qui se passe :
Une nouvelle file de fusion, nommée
Snyk PRs Queue, est créée. Les pull requests n’y seront fusionnées que lorsque tous les contrôles d’état de l’intégration continue auront réussi. Cela garantit que nos tests et les autres automatisations exécutés dans l’intégration continue se terminent correctement et que les versions mises à niveau des dépendances n’entraînent aucune régression (dans la limite de ce que nos tests peuvent détecter).Pour être ajoutées à la Snyk PRs Queue, les pull requests doivent respecter les conditions suivantes :
Le titre de la pull request commence par
[Snyk].Le nom de la branche source de la pull request commence par
snyk-fix.Le nom de la branche cible (celle dans laquelle la pull request sera fusionnée) est
main.
Si les conditions ci-dessus sont remplies, nous ajoutons à la pull request le libellé GitHub « auto-merge » et la plaçons dans la Snyk PRs Queue.
Enregistrons le nouveau fichier de configuration Mergify dans le dépôt, puis observons la magie opérer lorsque Snyk crée une nouvelle pull request :

Conseil : réduisez le bruit grâce aux règles de mise à niveau des dépendances de Snyk
L’automatisation des pull requests pour les dépendances peut rapidement submerger votre équipe par leur volume. Il est essentiel de trouver un équilibre pour que les mises à jour ne perturbent pas le workflow de votre équipe. C’est là que les règles de mise à niveau des dépendances de Snyk vous sont utiles.
1. Limitez le nombre de PR de mise à niveau ouvertes simultanément : Snyk vous permet de gérer le volume de pull requests en limitant le nombre de PR de mise à niveau automatisées pouvant être ouvertes à la fois. Votre équipe n’est ainsi pas submergée par les demandes de mise à niveau et peut se concentrer sur les tâches de développement les plus importantes.
2. Choisissez les packages dont vous souhaitez ignorer les mises à niveau : Tous les packages ne nécessitent pas ou ne justifient pas des mises à jour fréquentes. Une mise à niveau systématique vers la dernière version peut parfois casser votre code ou le rendre instable. Dans ce cas, Snyk vous permet d’exclure certains packages de ses mises à jour automatiques. Vous gardez ainsi la maîtrise du calendrier de mise à jour des dépendances et pouvez vous concentrer sur les packages les plus importants pour votre projet.
3. Limitez l’ampleur des changements en ne mettant à niveau que les versions mineures et correctives : Les mises à niveau de versions majeures peuvent parfois entraîner plus de problèmes qu’elles n’en résolvent et nécessiter des modifications supplémentaires du code en raison de changements incompatibles. Avec Snyk, vous pouvez choisir de mettre à niveau automatiquement uniquement les versions mineures et correctives. Votre application reste ainsi stable tout en bénéficiant des améliorations non incompatibles et des correctifs de sécurité.
La mise en œuvre de ces trois règles réduira le bruit lié aux mises à niveau des dépendances. Votre équipe de développement pourra ainsi suivre plus facilement les mises à jour essentielles et limiter les risques de désordre dans la base de code. N’oubliez pas que l’objectif des mises à jour automatisées est de vous décharger des mises à jour manuelles, et non de déplacer cette charge ailleurs. Tirez parti des puissantes fonctionnalités de Snyk pour maintenir un workflow d’intégration continue fluide et bien organisé, sans distractions inutiles.
Automatisez et n’y pensez plus
La fusion automatique des mises à niveau des dépendances peut accélérer votre équipe et améliorer sa productivité. C’est une excellente occasion d’automatisation.
Avec les PR de mise à niveau des dépendances de Snyk, vous n’avez plus besoin de suivre et de vérifier manuellement les mises à jour. Fini les mises à jour de dépendances envahissantes : place à un processus plus simple, plus sûr et plus fluide. En associant Mergify et Snyk, vous pouvez faire passer votre workflow au niveau supérieur.
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis de capture du drapeau en regardant à la demande notre atelier virtuel d’initiation.
