Aller au contenu

Objectifs pédagogiques

  • Comprendre les enjeux de la gestion automatisée des dépendances
  • Configurer et utiliser Renovate en mode local
  • Déployer Renovate via une solution SaaS
  • Installer et configurer Renovate en self-hosted avec Docker Compose
  • Installer et configurer Renovate en self-hosted avec Kubernetes

Renovate & Théorie


Introduction à Renovate

Qu'est-ce que Renovate ?

Renovate est un outil open-source développé par Mend (anciennement WhiteSource) qui automatise la mise à jour des dépendances dans vos projets logiciels

Il analyse votre code, détecte les dépendances obsolètes et crée automatiquement des Pull Requests (PR) ou Merge Requests (MR) pour les mettre à jour


Pourquoi automatiser les mises à jour ?

Problématiques sans automatisation :

  • Dépendances obsolètes accumulent des vulnérabilités de sécurité
  • Mise à jour manuelle chronophage et sujette aux oublis
  • Difficultés de migration quand les versions sont trop anciennes
  • Manque de visibilité sur l'état des dépendances

Avantages de Renovate :

  • Détection automatique des nouvelles versions
  • Création de PR/MR groupées ou individuelles
  • Tests automatiques via CI/CD avant merge
  • Support multi-langages (npm, Maven, pip, Go, Docker, etc.)
  • Configuration hautement personnalisable

Architecture et fonctionnement

Renovate fonctionne selon le principe suivant :

  • Scan : Analyse les fichiers de dépendances (package.json, pom.xml, requirements.txt, etc.)
  • Détection : Interroge les registres (npm, Maven Central, PyPI, etc.) pour trouver les nouvelles versions
  • Validation : Vérifie les contraintes de version et les règles configurées
  • Création de PR/MR : Génère des propositions de mise à jour
  • Tests : Déclenche la CI/CD pour valider les changements

Les trois modes de déploiement

Mode Avantages Inconvénients Cas d'usage
Local Rapide à tester, pas d'infrastructure Manuel, pas d'automatisation continue Développement, tests, debugging
SaaS Aucune infrastructure à gérer, gratuit pour l'open-source Dépendance externe, limitations potentielles Projets publics, petites équipes
Self-hosted Contrôle total, données internes Infrastructure à maintenir Entreprises, projets privés sensibles

Renovate == Dependabot ?

Renovate et Dependabot sont tous deux des outils d'automatisation des mises à jour de dépendances, mais ils se distinguent principalement par leur flexibilité (Renovate) et leur intégration native (Dependabot)

Caractéristique Renovate Dependabot
Plateformes Supportées Multiples (GitHub, GitLab, Bitbucket, Azure DevOps, Self-Hosted). Principalement GitHub (intégré nativement).
Niveau de Configuration Extensif (fichiers renovate.json, presets partagés, expressions cron pour la planification). Limité (fichier dependabot.yml, planification par intervalle basique).
Regroupement des Mises à Jour (Grouping) Avancé et intelligent. Permet de regrouper les dépendances par fonctionnalité, type ou automatiquement (ex. : group:monorepos). Réduit le "bruit" des PR. Limité/Basique (souvent une PR par dépendance, même si des fonctionnalités de regroupement existent).
Support Monorepo Excellent. Conçu pour gérer les dépendances partagées entre plusieurs sous-projets dans un seul dépôt. Limité. Peut générer de nombreuses PR redondantes.
Tableau de Bord (Dashboard) Oui : Dependency Dashboard (issue dédiée) pour vue d'ensemble et interaction manuelle. Non : uniquement via l'onglet Sécurité/Insights de GitHub.
Auto-Merge Hautement configurable (basé sur le type de mise à jour, les résultats des tests, etc.). Basique/Limité.
Nombre de Package Managers Très large (30+), incluant Dockerfile, Kubernetes, etc. Plus restreint (≈14).
Alertes de Sécurité Prend en charge les alertes de vulnérabilité (peut utiliser l'API Dependabot ou OSV.dev). Excellent et intégré (spécialité de GitHub).

Renovate == Dependabot ?

Choisissez Dependabot si :

  • Vous utilisez exclusivement GitHub et n'avez pas l'intention d'en changer
  • Votre projet est simple (pas de monorepo complexe)
  • Vous privilégiez la simplicité et l'intégration native à toute configuration avancée. L'activation est souvent en un seul clic
  • Votre priorité principale est la détection rapide des vulnérabilités (sécurité)

Choisissez Renovate si :

  • Vous utilisez GitLab, Bitbucket, Azure DevOps ou avez besoin d'une solution self-hosted
  • Vous gérez des monorepos ou des projets avec des dépendances complexes et partagées
  • Vous souhaitez réduire le nombre de Pull Requests en regroupant intelligemment les mises à jour
  • Vous avez besoin d'une configuration très précise (planification avancée par cron, règles spécifiques par dépendance, etc.)

Renovate & Pratique


Utilisation des webhooks

Les webhooks permettent à GitLab de déclencher Renovate instantanément au lieu d'attendre le scan planifié


☕️ Si tu souhaites soutenir mon travail, tu peux m'offrir un café ici.