← Retour aux articles
Tooling DependabotRenovate

Dependabot et Renovate : garder ses dépendances sous contrôle

· 4 min de lecture

Les dépendances obsolètes sont une menace silencieuse. Elles accumulent de la dette technique, introduisent des failles de sécurité, et finissent par transformer une simple mise à jour en migration de plusieurs jours. Dependabot et Renovate résolvent ce problème en automatisant tout le cycle de mise à jour : détection des nouvelles versions, ouverture de pull requests, et validation par la CI avant même qu’un humain n’y jette un oeil.

Dependabot : la solution intégrée de GitHub

Dependabot est livré avec chaque dépôt GitHub. Un simple fichier YAML dans .github/ suffit pour recevoir des PRs automatiques pour les packages obsolètes.

Une configuration adaptée aux vrais projets

Le comportement par défaut est bruyant. Grouper les mises à jour liées et limiter la fréquence des PRs permet de garder le tout gérable :

version: 2
updates:
  - package-ecosystem: npm
    directory: '/'
    schedule:
      interval: weekly
      day: monday
    groups:
      eslint:
        patterns: ['eslint*', '@typescript-eslint/*']
      react:
        patterns: ['react', 'react-dom', '@types/react*']
    open-pull-requests-limit: 10

Le groupement signifie une seule PR pour tous les bumps liés à ESLint au lieu de cinq séparées. Ça suffit à réduire significativement la fatigue de review.

Mises à jour de sécurité vs mises à jour de version

Dependabot distingue les alertes de sécurité des bumps de version de routine. Les PRs de sécurité sont créées immédiatement quel que soit le planning, tandis que les mises à jour de version suivent la cadence configurée. Cette séparation compte car une CVE critique ne devrait jamais attendre lundi prochain.

Renovate : le contrôle total sur le pipeline de mises à jour

Renovate est une alternative open-source qui fonctionne partout : GitHub, GitLab, Bitbucket, ou en self-hosted. Sa surface de configuration est vaste, ce qui le rend plus adapté aux équipes qui ont besoin d’un contrôle fin.

Des presets pour un setup rapide

Le système de presets de Renovate évite de partir de zéro. Le preset config:recommended couvre la plupart des cas d’usage :

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:recommended", "group:allNonMajor", ":automergeMinor", ":automergePatch"],
  "packageRules": [
    {
      "matchPackagePatterns": ["^@types/"],
      "automerge": true
    },
    {
      "matchUpdateTypes": ["major"],
      "labels": ["breaking-change"],
      "automerge": false
    }
  ]
}

Cette configuration auto-merge les patches et les mises à jour mineures tout en signalant les majeures pour review manuelle. Les packages de définition de types sont auto-mergés systématiquement car ils cassent rarement quoi que ce soit.

Automerge en toute confiance

L’automerge n’a de sens que quand la CI est solide. Renovate vérifie que tous les checks passent avant de merger, donc le filet de sécurité repose sur la suite de tests et le type checker. Si la CI est verte, la mise à jour de dépendance passe sans intervention humaine :

{
  "packageRules": [
    {
      "matchPackagePatterns": ["vitest", "@testing-library/*"],
      "groupName": "testing tools",
      "automerge": true,
      "schedule": ["before 8am on monday"]
    }
  ]
}

Gestion des remplacements et dépréciations

Renovate détecte quand un package est déprécié ou remplacé par un successeur. Il peut automatiquement remplacer node-fetch par le fetch natif, ou moment par dayjs, selon les règles de remplacement configurées. Ça va au-delà du simple bump de version.

Choisir entre les deux

Dependabot gagne en simplicité. Zéro configuration pour les repos GitHub, comportement prévisible, intégration étroite avec les advisories de sécurité de GitHub. Pour les développeurs solo ou les petites équipes sur GitHub, c’est le choix évident.

Renovate gagne en flexibilité. Presets personnalisés, stratégies d’automerge, support des monorepos, managers regex pour les fichiers non standards, et compatibilité multi-plateformes. Pour les équipes gérant plusieurs dépôts ou ayant besoin de workflows automatisés au-delà de la simple création de PR, Renovate est l’outil le plus puissant.

Les deux peuvent coexister. Certaines équipes utilisent Dependabot pour les alertes de sécurité et Renovate pour les mises à jour de version, en tirant parti des forces de chacun.

Le vrai coût de l’inaction

Le choix n’est pas Dependabot vs Renovate. C’est mises à jour automatisées vs pas de mises à jour. Les projets sans automatisation des dépendances dérivent inévitablement vers un état où mettre à jour devient douloureux, risqué et chronophage. Une PR hebdomadaire qui bumpe un patch prend quelques secondes à reviewer. Un an de mises à jour accumulées prend des jours à démêler.

Automatiser la gestion des dépendances est l’un des investissements les plus rentables qu’une équipe puisse faire pour la santé long terme d’un projet. Choisissez l’un ou l’autre, configurez-le une fois, et laissez la CI faire le reste.