Main slides
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
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 (regroupement par fonctionnalité, type ou via group:monorepos pour réduire le bruit) | Limité/Basique (souvent une PR par dépendance) |
| Support Monorepo | Excellent (conçu pour gérer les dépendances partagées) | Limité (peut générer de nombreuses PR redondantes) |
| Tableau de Bord (Dashboard) | Oui (Dependency Dashboard via une issue dédiée) | 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 CI, etc) | Basique/Limité |
| Nombre de Package Managers | Très large (30+), incluant Dockerfile, Kubernetes, etc | Plus restreint (environ 14) |
| Alertes de Sécurité | Prises en charge via l'API Dependabot | Excellent et intégré (natif 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 (activation 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)
Utilisation et Onboarding¶
Le processus de mise en route de Renovate :
- PR d'onboarding : Renovate propose une première Pull Request contenant un fichier
renovate.jsonminimal - Validation : Une fois la PR fusionnée, Renovate commence à analyser le dépôt
- Dependency Dashboard : Création d'une issue servant de tableau de bord interactif pour suivre et piloter les mises à jour
Configuration de base¶
Exemple de fichier renovate.json standard :
Options clés : - extends : Permet d'hériter de configurations prédéfinies (presets) - labels : Ajoute automatiquement des tags sur vos Pull Requests - timezone : Aligne les horaires de planification sur votre fuseau horaire
Le Dependency Dashboard¶
Une interface directement dans vos tickets (Issues) :
- Centralise toutes les mises à jour détectées et en attente
- Permet de forcer manuellement la création d'une Pull Request
- Permet de relancer une mise à jour fermée ou en échec
- Offre une vue claire aux équipes sans encombrer la liste des PRs
Workflow mensuel de mise à jour¶
Objectif : Réduire le bruit et la fatigue des alertes
- Planification : Exécuter Renovate une fois par mois
- Regroupement (Grouping) : Regrouper toutes les mises à jour mineures et correctifs en une seule PR
- Validation automatique (Automerge) : Fusionner automatiquement les mises à jour de développement (comme les devDependencies) validées par la CI
- Approbation manuelle : Demander une validation explicite sur le dashboard pour les mises à jour majeures
Exemple de configuration mensuelle¶
Fichier renovate.json optimisé pour une mise à jour mensuelle :
{
"extends": ["config:recommended"],
"schedule": ["before 5am on the first day of the month"],
"timezone": "Europe/Paris",
"dependencyDashboardApproval": true,
"packageRules": [
{
"matchUpdateTypes": ["minor", "patch"],
"groupName": "All non-major dependencies",
"automerge": true
},
{
"matchDepTypes": ["devDependencies"],
"automerge": true
},
{
"matchUpdateTypes": ["major"],
"dependencyDashboardApproval": true
}
]
}
Déploiement et modes d'exécution¶
1. CLI Renovate (utilisation ponctuelle) - Lancement manuel en local via Docker (docker run renovate/renovate) ou npx renovate - Idéal pour tester une configuration ou forcer une mise à jour immédiate
2. CLI en Job planifié (CI/CD ou Cron) - Exécution périodique via un pipeline (GitLab CI, GitHub Actions) ou un CronJob Kubernetes - Pas d'infrastructure persistante à maintenir (le job tourne et s'arrête)
3. Mend Renovate Community Edition (serveur web) - Version auto-hébergée complète fonctionnant sous forme de service continu (Docker Compose ou Kubernetes) - Réagit instantanément aux événements utilisateur grâce aux webhooks (comme vu en TP)