Aller au contenu
Développement medium

Renovate : automatiser les mises à jour

29 min de lecture

logo renovate

Renovate automatise les mises à jour de vos dépendances logicielles en créant des Pull Requests testables, traçables et fusionnables. Ce guide vous apprend à l’installer, le configurer et le sécuriser. Vous saurez adapter les stratégies de mise à jour à votre projet (scheduling, automerge, regroupement) et durcir votre installation contre les attaques supply chain. Prérequis : Node.js 20+ installé et un accès à un dépôt Git (GitHub, GitLab, Bitbucket ou autre).

Imaginez un assistant qui surveille en permanence toutes les bibliothèques de votre projet, vérifie si des versions plus récentes sont disponibles, et vous prépare une mise à jour testée automatiquement, prête à fusionner. C’est exactement ce que fait Renovate.

Renovate est un outil open source (licence AGPL) maintenu par Mend.io. Il analyse vos fichiers de dépendances (package.json, Dockerfile, docker-compose.yml, requirements.txt, go.mod, pom.xml, fichiers Terraform, playbooks Ansible, GitHub Actions, et bien d’autres), détecte les versions obsolètes, et crée automatiquement des Pull Requests (PR) avec les mises à jour correspondantes.

Sans RenovateAvec Renovate
Vérification manuelle des versionsDétection automatique des mises à jour
Risque d’oublier des dépendancesCouverture exhaustive de tous les fichiers
Pas de traçabilité des décisionsHistorique complet dans les PR
Vulnérabilités non détectées pendant des semainesAlerte dès la publication d’un correctif

Renovate supporte plus de 90 gestionnaires de paquets (appelés managers) couvrant la quasi-totalité des écosystèmes : JavaScript (npm, Yarn, pnpm), Python (pip, Poetry, Pipenv), Java (Maven, Gradle), Go, Rust, Ruby, .NET, PHP, Helm, Terraform, Ansible, Docker, GitHub Actions, et bien d’autres encore.

Avant de commencer, vérifiez que vous disposez de :

  • Node.js 20 ou supérieur — Renovate s’installe via npm. Vérifiez avec node -v.
  • Un dépôt Git hébergé sur GitHub, GitLab, Bitbucket, Azure DevOps, Forgejo ou Gitea.
  • Un Personal Access Token (PAT) avec les droits nécessaires sur votre plateforme (détaillés plus bas).
  • Connaissances de base en Git — savoir ce qu’est une branche et une Pull Request.

Comprendre le fonctionnement interne de Renovate permet de mieux le configurer. À chaque exécution, Renovate suit cinq phases :

Phase 1 — Initialisation. Renovate clone le dépôt, lit la configuration (renovate.json) et résout les presets étendus. Il vérifie si le dépôt est déjà onboardé (c’est-à-dire s’il possède un fichier de configuration).

Phase 2 — Extraction des dépendances. Les managers parcourent les fichiers du projet pour identifier toutes les dépendances déclarées. Chaque manager sait lire un format spécifique : le manager npm lit package.json, le manager dockerfile lit les instructions FROM, le manager terraform lit les blocs required_providers, et ainsi de suite.

Phase 3 — Recherche des mises à jour. Pour chaque dépendance extraite, Renovate interroge la datasource correspondante (le registre npm, Docker Hub, PyPI, etc.) pour trouver les versions disponibles. Il compare la version actuelle avec les versions publiées et détermine les mises à jour applicables.

Phase 4 — Écriture des mises à jour. Renovate génère les modifications nécessaires : il crée des branches, met à jour les fichiers de dépendance (y compris les fichiers lock), et ouvre les Pull Requests sur la plateforme.

Phase 5 — Finalisation. Renovate met à jour le Dependency Dashboard (s’il est activé), gère l’automerge des PR qui ont passé les tests, et nettoie les branches obsolètes.

  1. Installer Renovate globalement

    Ouvrez un terminal et installez le paquet npm :

    Fenêtre de terminal
    npm install -g renovate

    Vérification : exécutez renovate --version. Vous devez voir un numéro de version (par exemple 39.264.1).

  2. Créer les Personal Access Tokens

    Renovate a besoin de deux tokens pour fonctionner :

    • GITHUB_COM_TOKEN : un PAT classic sur github.com avec le scope public_repo. Sert à récupérer les changelogs et éviter les limites d’API.
    • RENOVATE_TOKEN : un PAT avec les scopes repo et workflow sur le dépôt cible.

    Exportez les tokens dans votre terminal :

    Fenêtre de terminal
    export GITHUB_COM_TOKEN="ghp_votre_token_github"
    export RENOVATE_TOKEN="votre_token_plateforme"
  3. Créer le fichier de configuration

    À la racine de votre dépôt, créez un fichier renovate.json :

    {
    "$schema": "https://docs.renovatebot.com/renovate-schema.json",
    "extends": ["config:recommended"]
    }

    Le preset config:recommended active les paramètres recommandés par l’équipe Renovate : regroupement des mises à jour non majeures par monorepo, limitation des PR concurrentes, et activation du Dependency Dashboard.

  4. Lancer un dry-run local

    Avant de lancer Renovate sur un vrai dépôt, testez-le en mode local pour voir ce qu’il détecte sans créer de branches ni de PR :

    Fenêtre de terminal
    LOG_LEVEL=debug renovate --platform=local --dry-run=lookup

    Ce mode analyse le répertoire courant, identifie les dépendances et les mises à jour disponibles, puis s’arrête sans modifier quoi que ce soit. Parcourez les logs pour vérifier que Renovate détecte bien vos fichiers.

  5. Exécuter Renovate sur un dépôt distant

    Une fois satisfait du dry-run, lancez Renovate sur un vrai dépôt :

    Fenêtre de terminal
    renovate --platform=github votre-org/votre-repo

    Ou pour GitLab :

    Fenêtre de terminal
    renovate --platform=gitlab --endpoint=https://gitlab.com/api/v4 votre-org/votre-repo

    Lors de la première exécution, Renovate crée une PR d’onboarding qui propose un fichier renovate.json. Fusionnez cette PR pour activer Renovate sur votre dépôt.

Renovate cherche sa configuration dans l’un de ces fichiers, par ordre de priorité :

FichierFormat
renovate.jsonJSON standard
renovate.json5JSON5 (commentaires autorisés)
.renovatercJSON ou JSON5
.renovaterc.jsonJSON
renovate section dans package.jsonJSON

En pratique, renovate.json est le choix le plus courant. Si vous préférez ajouter des commentaires pour documenter votre configuration, utilisez le format JSON5 avec renovate.json5.

Les presets sont des configurations réutilisables. Au lieu de tout configurer manuellement, vous étendez un preset existant et ne surchargez que ce qui diffère. Pensez aux presets comme à des thèmes CSS : vous partez d’une base cohérente et vous ajustez les détails.

Les presets intégrés les plus courants :

PresetRôle
config:recommendedConfiguration de base recommandée
config:best-practicesRecommandations renforcées (inclut minimumReleaseAge pour npm)
:dependencyDashboardActive le tableau de bord des dépendances (inclus dans config:recommended)
schedule:nonOfficeHoursLimite les mises à jour en dehors des heures de bureau
group:allNonMajorRegroupe toutes les mises à jour mineures et patches en une seule PR
:automergeDigestAutomerge les mises à jour de digests Docker

Voici un exemple combinant plusieurs presets :

{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended",
"schedule:nonOfficeHours",
":automergeDigest"
]
}

La majorité des écosystèmes suivent la convention SemVer : MAJEURE.MINEURE.PATCH. Chaque type de mise à jour porte un risque différent :

  • Patch (ex : 1.2.3 → 1.2.4) : correctifs de bugs. Risque très faible.
  • Minor (ex : 1.2.3 → 1.3.0) : nouvelles fonctionnalités rétrocompatibles. Risque faible.
  • Major (ex : 1.2.3 → 2.0.0) : changements pouvant casser la rétrocompatibilité. Risque élevé.

Renovate distingue ces trois types et permet de configurer un comportement différent pour chacun. Le preset config:recommended sépare automatiquement les mises à jour majeures des autres.

Voici une configuration typique qui fusionne automatiquement les patches et mineures tout en gardant les majeures pour une revue manuelle :

{
"extends": ["config:recommended"],
"packageRules": [
{
"description": "Automerge patches et mineures (hors v0.x)",
"matchUpdateTypes": ["minor", "patch"],
"matchCurrentVersion": "!/^0/",
"automerge": true
}
]
}

La condition matchCurrentVersion: "!/^0/" exclut les paquets en version 0.x, car le SemVer autorise des changements cassants sur toute mise à jour avant la version 1.0.0.

L’option rangeStrategy contrôle comment Renovate modifie les contraintes de version dans vos fichiers. Les valeurs possibles sont :

StratégieComportementUsage typique
bumpAugmente la borne inférieure (^1.2.3^1.3.0)Applications avec lock file
replaceÉlargit le range si possible (^1.2.3^1.3.0 si compatible)Bibliothèques publiées
pinFixe la version exactement (^1.2.31.3.0)Reproductibilité maximale
widenÉlargit le range (^1.2.3^1.2.3 || ^2.0.0)Bibliothèques supportant plusieurs majeures
autoLaisse Renovate décider selon le contexteValeur par défaut

Pour un projet applicatif (non publié comme bibliothèque), la stratégie bump est généralement le meilleur choix car elle rend les mises à jour explicites dans le fichier lock.

Par défaut, Renovate est “toujours actif” : il crée des PR dès qu’il trouve une mise à jour. Cela peut devenir bruyant sur des projets avec beaucoup de dépendances. L’option schedule permet de contrôler les fenêtres d’exécution.

Renovate utilise UTC par défaut. Pour utiliser votre heure locale, configurez le fuseau horaire avec un identifiant IANA :

{
"timezone": "Europe/Paris"
}

Renovate recommande la syntaxe cron (5 champs) pour les schedules. L’astérisque * est obligatoire pour les minutes car Renovate ne supporte pas la granularité à la minute :

{
"extends": ["config:recommended"],
"timezone": "Europe/Paris",
"schedule": ["* 0-4 * * 1-5", "* * * * 0,6"]
}

Cette configuration signifie : exécuter les mises à jour en semaine entre minuit et 5h, et à tout moment le week-end.

Autres exemples courants :

BesoinCronPreset équivalent
En dehors des heures de bureau* 0-4,22-23 * * 1-5 + * * * * 0,6schedule:nonOfficeHours
Uniquement le week-end* * * * 0,6schedule:weekends
Lundi matin avant 6h* 0-5 * * 1
Trimestriel, le 1er du mois* * 1 */3 *

Certaines bibliothèques publient très souvent (AWS SDK, types TypeScript…). Vous pouvez leur appliquer un schedule dédié pour réduire le bruit :

{
"packageRules": [
{
"description": "AWS SDK : mises à jour hebdomadaires uniquement",
"matchPackageNames": ["@aws-sdk/**"],
"schedule": ["* 21-23 * * 0"]
}
]
}

L’automerge permet à Renovate de fusionner une PR sans intervention humaine dès que les tests CI passent. Cette fonctionnalité est idéale pour les mises à jour à faible risque : patches de devDependencies, mises à jour de lock file, ou digests Docker.

L’équipe Renovate recommande d’activer l’automerge pour toute mise à jour que vous fusionneriez systématiquement de toute façon. En pratique, cela concerne souvent :

  • Les devDependencies (linters, outils de test, formatters)
  • Les mises à jour mineures et patches sur des projets bien testés
  • La maintenance des lock files (rafraîchissement sans changement de version déclarée)
  • Les digests Docker (mise à jour du hash sans changement de tag)

Automerge des devDependencies linters :

{
"packageRules": [
{
"description": "Automerge des outils de dev",
"matchDepTypes": ["devDependencies"],
"matchPackageNames": ["eslint", "prettier", "vitest"],
"automerge": true
}
]
}

Automerge de toutes les mises à jour non majeures :

{
"packageRules": [
{
"description": "Automerge non-major hors v0.x",
"matchUpdateTypes": ["minor", "patch"],
"matchCurrentVersion": "!/^0/",
"automerge": true
}
]
}

Automerge de la maintenance du lock file :

{
"lockFileMaintenance": {
"enabled": true,
"automerge": true,
"schedule": ["* * * * 0"]
}
}

Par défaut, Renovate crée une PR puis la fusionne via la plateforme (platformAutomerge). Vous pouvez configurer un mode plus silencieux avec automergeType: "branch" : Renovate crée uniquement une branche, et si les tests passent, il pousse directement le commit sur la branche cible sans créer de PR. Si les tests échouent, il crée alors une PR pour vous permettre d’investiguer.

{
"automergeType": "branch"
}

Le Dependency Dashboard est un ticket (issue) que Renovate crée dans votre dépôt. Il sert de tableau de bord centralisé montrant l’état de toutes les mises à jour : en cours, en attente, fermées ou ignorées.

Le preset config:recommended active le Dashboard par défaut. Si vous souhaitez l’activer manuellement :

{
"dependencyDashboard": true
}

Le Dashboard apporte trois fonctionnalités particulièrement utiles dans un contexte d’équipe.

Visibilité des mises à jour ignorées. Si quelqu’un ferme une PR Renovate sans la fusionner, la mise à jour apparaît dans la section “Closed/Ignored” du Dashboard. Vous pouvez la relancer d’un clic en cochant la case correspondante.

Workflow d’approbation. Pour les mises à jour sensibles, vous pouvez demander à Renovate d’attendre une approbation explicite avant de créer la PR. Cette approbation se fait en cochant une case dans le Dashboard :

{
"major": {
"dependencyDashboardApproval": true
}
}

Avec cette configuration, les mises à jour majeures n’apparaissent que dans le Dashboard. Renovate ne crée la PR que lorsque vous cochez la case correspondante. Les mises à jour mineures et patches continuent normalement.

Détection d’abandon. Le preset config:best-practices inclut abandonments:recommended qui signale les paquets n’ayant publié aucune mise à jour depuis plus d’un an. Ces avertissements apparaissent en haut du Dashboard pour vous alerter de dépendances potentiellement abandonnées.

Les packageRules sont le mécanisme central pour personnaliser le comportement de Renovate par dépendance, groupe de dépendances, type de mise à jour ou tout autre critère. Chaque règle est un objet avec des matchers (critères de sélection) et des options à appliquer.

Les matchers principaux :

MatcherRôleExemple
matchPackageNamesNom du paquet (glob ou regex)["react", "@types/**"]
matchDepTypesType de dépendance["devDependencies"]
matchUpdateTypesType de mise à jour["major", "minor", "patch"]
matchDatasourcesSource de données["docker", "npm"]
matchFileNamesFichier source["docker-compose*.yml"]
matchManagersGestionnaire de paquets["dockerfile", "helm-values"]
matchCurrentVersionVersion actuelle (regex)"!/^0/"

Voici un exemple complet combinant plusieurs règles :

{
"extends": ["config:recommended"],
"packageRules": [
{
"description": "Regrouper les paquets React",
"matchPackageNames": ["react", "react-dom", "@types/react"],
"groupName": "react monorepo"
},
{
"description": "Automerge les outils de lint",
"matchPackageNames": ["eslint*", "prettier"],
"matchUpdateTypes": ["minor", "patch"],
"automerge": true
},
{
"description": "Bloquer les mises à jour Node.js 22+",
"matchPackageNames": ["node"],
"matchUpdateTypes": ["major"],
"enabled": false
},
{
"description": "Limiter Terraform providers au week-end",
"matchManagers": ["terraform"],
"matchDatasources": ["terraform-provider"],
"schedule": ["* * * * 0,6"]
}
]
}

Les règles sont évaluées dans l’ordre : la dernière règle qui matche une dépendance a la priorité pour chaque option qu’elle définit.

Les customManagers permettent à Renovate de détecter des dépendances dans des fichiers au format non standard. Renovate supporte deux types de custom managers : regex et jsonata.

Le type regex est le plus courant. Vous écrivez une expression régulière qui capture les informations nécessaires : depName, currentValue, et datasource.

Prenons un exemple concret : vous avez un script shell qui télécharge une image cloud Ubuntu, et vous voulez que Renovate détecte et mette à jour la version automatiquement.

Dans votre script download-ubuntu.sh :

Fenêtre de terminal
# renovate: datasource=github-releases depName=canonical/cloud-init
CLOUD_INIT_VERSION="24.4"

Dans renovate.json :

{
"customManagers": [
{
"customType": "regex",
"fileMatch": ["\\.sh$"],
"matchStrings": [
"#\\s*renovate:\\s*datasource=(?<datasource>.*?)\\s+depName=(?<depName>.*?)\\n.*?VERSION=\"(?<currentValue>.*?)\""
]
}
]
}

Le commentaire structuré # renovate: datasource=... depName=... dans le fichier source fournit le contexte nécessaire à la regex. Cette convention permet de rendre n’importe quel fichier “renovatable” sans changer le format.

Lorsque les versions d’un outil ne sont pas publiées sur un registre classique (npm, PyPI, Docker Hub…), vous pouvez créer une customDatasource qui interroge une URL personnalisée :

{
"customDatasources": {
"UbuntuCloudImages": {
"defaultRegistryUrlTemplate": "https://cloud-images.ubuntu.com/releases/24.04/",
"format": "html"
}
},
"packageRules": [
{
"matchDatasources": ["custom.UbuntuCloudImages"],
"extractVersion": "^release-(?<version>\\d+)/$"
}
]
}

Les formats supportés sont json, plain, html et yaml. Le champ extractVersion utilise une regex pour extraire le numéro de version depuis le contenu retourné.

Par défaut, Renovate crée une PR distincte par dépendance. Sur un gros projet, cela peut générer des dizaines de PR. Le regroupement (groupName) rassemble plusieurs dépendances dans une seule PR :

{
"packageRules": [
{
"description": "Regrouper toutes les dépendances AWS SDK",
"matchPackageNames": ["@aws-sdk/**"],
"groupName": "AWS SDK"
},
{
"description": "Regrouper tous les non-major en une PR",
"matchUpdateTypes": ["minor", "patch"],
"groupName": "all non-major dependencies",
"groupSlug": "all-minor-patch"
}
]
}

Le preset group:allNonMajor fait exactement cela de manière concise :

{
"extends": ["config:recommended", "group:allNonMajor"]
}

Pour éviter la surcharge, Renovate offre plusieurs limiteurs :

OptionRôleValeur par défaut
prConcurrentLimitNombre max de PR ouvertes en parallèle10
prHourlyLimitNombre max de PR créées par heure2
branchConcurrentLimitNombre max de branches actives10
{
"prConcurrentLimit": 5,
"prHourlyLimit": 1
}

Renovate exécute du code provenant de vos dépôts (scripts d’installation, post- upgrade tasks). Sur une installation self-hosted partagée entre plusieurs équipes, une mauvaise configuration peut transformer Renovate en vecteur d’attaque supply chain. Cette section détaille les risques et les contre-mesures.

Lorsque autodiscover: true est activé sans restriction, Renovate traitera tous les dépôts auxquels le bot a accès. Sur GitLab, un attaquant peut inviter le bot dans un dépôt piégé (les invitations sont acceptées par défaut), et à la prochaine exécution, Renovate clone le dépôt malveillant et exécute ses scripts.

Par exemple, un dépôt Gradle piégé avec un gradlew modifié exécutera du code arbitraire lors de la phase de résolution des dépendances, car Renovate invoque le gestionnaire natif du langage.

Contre-mesure : toujours restreindre l’autodiscovery avec un filtre explicite :

{
"autodiscover": true,
"autodiscoverFilter": ["mon-org/frontend-*", "mon-org/backend-*"]
}

Ou mieux, utilisez une liste fixe de dépôts dans votre configuration globale self-hosted :

{
"repositories": ["mon-org/app-web", "mon-org/api-backend"]
}

Risque 2 — Scripts d’installation et variables d’environnement

Section intitulée « Risque 2 — Scripts d’installation et variables d’environnement »

Deux options self-hosted sont particulièrement dangereuses si elles sont mal configurées :

  • allowScripts: true permet aux dépôts d’exécuter les scripts postinstall, prepare, etc. lors du npm install. Un paquet malveillant peut y placer du code arbitraire.
  • exposeAllEnv: true transmet toutes les variables d’environnement du processus Renovate aux sous-processus. Le token RENOVATE_TOKEN peut être exfiltré via un commit message crafté.

Contre-mesure : gardez les valeurs par défaut et configurez explicitement ce dont vous avez besoin :

{
"allowScripts": false,
"exposeAllEnv": false,
"ignoreScripts": true,
"allowedCommands": []
}

Si vous avez besoin d’un script post-upgrade spécifique, restreignez-le avec une regex stricte dans allowedCommands :

{
"allowedCommands": ["^npm run lint:fix$", "^go mod tidy$"]
}

Si l’automerge est activé sans période de cooldown, un paquet npm compromis peut être publié et mergé dans votre projet en quelques minutes, avant que quiconque ne détecte le problème. C’est ce qu’on appelle la fenêtre dorée (golden hour) de l’attaque supply chain.

Contre-mesure : activez minimumReleaseAge pour imposer un délai entre la publication d’une version et son adoption par Renovate :

{
"extends": ["config:best-practices"],
"minimumReleaseAge": "3 days"
}

Le preset config:best-practices inclut déjà un minimumReleaseAge de 3 jours pour l’écosystème npm. Vous pouvez l’ajuster par dépendance via les packageRules.

Risque 4 — Race condition sur l’automerge (GitLab)

Section intitulée « Risque 4 — Race condition sur l’automerge (GitLab) »

Sur GitLab, un développeur malveillant avec un rôle developer peut ajouter un commit dans la branche d’une MR Renovate avant que le bot n’active l’automerge. Si le timing est bon, le commit non revu est fusionné automatiquement dans la branche protégée, contournant le principe de revue à quatre yeux.

Contre-mesure : configurez GitLab pour n’autoriser l’automerge que si la pipeline CI a été relancée après le dernier commit :

Pour une installation self-hosted sécurisée, combinez toutes les contre-mesures dans votre configuration globale (fichier config.js ou variables d’environnement) :

// config.js — configuration globale self-hosted durcie
module.exports = {
platform: 'gitlab',
endpoint: 'https://gitlab.example.com/api/v4',
token: process.env.RENOVATE_TOKEN,
// Restreindre les dépôts traités
autodiscover: true,
autodiscoverFilter: ['mon-org/frontend-*', 'mon-org/backend-*'],
// Bloquer l'exécution de code arbitraire
allowScripts: false,
exposeAllEnv: false,
allowedCommands: ['^npm run lint:fix$'],
// Délai de sécurité
extends: ['config:best-practices'],
// Auditer les actions
repositoryCache: 'enabled',
};

En production, Renovate est rarement lancé manuellement. Il est intégré dans un pipeline CI/CD qui l’exécute à intervalles réguliers (typiquement toutes les heures ou toutes les nuits).

Utilisez l’action officielle renovatebot/github-action :

.github/workflows/renovate.yml
name: Renovate
on:
schedule:
- cron: '0 */2 * * *' # Toutes les 2 heures
workflow_dispatch:
permissions: {}
jobs:
renovate:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- uses: renovatebot/github-action@e084b5481e3a5381a3dd80bfaa41edfa886634f6 # v41.0.13
with:
configurationFile: renovate.json
token: ${{ secrets.RENOVATE_TOKEN }}
env:
GITHUB_COM_TOKEN: ${{ secrets.GITHUB_COM_TOKEN }}
SymptômeCause probableSolution
Renovate ne crée aucune PRDépôt pas encore onboardéFusionnez la PR d’onboarding, ou vérifiez que renovate.json existe
Automerge ne fonctionne pasBranche protégée avec revues obligatoiresConfigurez platformAutomerge: true et ajoutez le bot comme auteur autorisé
”Automerge: Disabled by config” dans la PRConfiguration automerge incorrecteVérifiez les packageRules : la dernière règle matchant a la priorité
PR créées puis fermées immédiatementRate limit atteinte ou fichier lock en conflitConsultez les logs avec LOG_LEVEL=debug, vérifiez prConcurrentLimit
Fichier lock non mis à jourGestionnaire de paquets non trouvéEn self-hosted, vérifiez binarySource et que les outils sont installés
Dependency Dashboard non crééFeature non supportée par la plateformeLe Dashboard nécessite les issues Markdown (non supporté sur Bitbucket Server)
“Cannot find manager” dans les logsFormat de fichier non reconnuVérifiez le nom du fichier ou créez un customManager
PR trop nombreusesPas de schedule ni de limite configuréeAjoutez schedule, prConcurrentLimit et envisagez group:allNonMajor
  1. Renovate automatise la création de PR pour mettre à jour vos dépendances, couvrant plus de 90 gestionnaires de paquets.
  2. Les presets (config:recommended, config:best-practices) offrent une base solide sans configuration manuelle complexe.
  3. L’automerge réduit la charge de travail pour les mises à jour à faible risque (patches, devDependencies, lock files), mais exigez toujours des tests CI qui passent.
  4. Le Dependency Dashboard centralise la visibilité sur toutes les mises à jour et permet un workflow d’approbation pour les changements sensibles.
  5. minimumReleaseAge est votre première ligne de défense contre les attaques supply chain : imposez un délai avant d’adopter une nouvelle version.
  6. En self-hosted, ne jamais activer autodiscover sans filtre, ni allowScripts ou exposeAllEnv sans raison explicite.
  7. Les packageRules permettent un contrôle granulaire : grouper, planifier, automerger ou bloquer par dépendance, manager ou type de mise à jour.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn