Renovate est un outil d'automatisation des mises à jour de dépendances. Il scanne les fichiers de configuration d'un dépôt (Dockerfile, docker-compose.yml, Chart.yaml, package.json, go.mod, requirements.txt, Terraform, etc.), détecte les versions obsolètes et ouvre des Pull Requests avec les mises à jour. Il supporte des dizaines de gestionnaires de packages et peut être auto-hébergé via Docker ou déployé comme GitHub App/GitLab bot. La configuration se fait via un fichier renovate.json dans le dépôt.
Informations essentielles
Origine : Mend (ex-WhiteSource) · Licence : AGPL-3.0 · Architectures : x86_64, ARM64
Liens : Documentation · GitHub · Releases
Support : Maintenu activement par Mend. Version hébergée gratuite sur GitHub App (app.renovatebot.com).
Stack par défaut
| Composant | Valeur |
|---|---|
| Langage | TypeScript / Node.js |
| Déploiement | Docker auto-hébergé ou GitHub App hébergée |
| Image Docker | ghcr.io/renovatebot/renovate |
| Config | renovate.json à la racine du dépôt |
| Managers | Docker, Helm, npm, pip, Go, Maven, Gradle, Terraform, Ansible, Flux, ArgoCD... |
Prérequis
| Ressource | Valeur |
|---|---|
| Token SCM | GitHub token, GitLab token, ou Gitea token avec accès dépôts |
| Docker (auto-hébergé) | Pour exécuter le conteneur Renovate |
| renovate.json | Fichier de config dans chaque dépôt à gérer |
Option 1 - GitHub App hébergée (le plus simple)
- Aller sur https://github.com/apps/renovate
- Installer l'app sur votre compte ou organisation
- Sélectionner les dépôts à gérer
- Renovate ouvrira automatiquement une PR "Configure Renovate" avec un
renovate.jsonde départ
Aucune infrastructure à gérer.
Option 2 - Auto-hébergement Docker
# Exécution unique sur un dépôt
docker run --rm \
-e RENOVATE_TOKEN=ghp_xxxxxxxxxxxx \
-e LOG_LEVEL=info \
ghcr.io/renovatebot/renovate \
mon-org/mon-repo
Docker Compose avec planification
# docker-compose.yml
services:
renovate:
image: ghcr.io/renovatebot/renovate:latest
environment:
- RENOVATE_TOKEN=${GITHUB_TOKEN}
- RENOVATE_REPOSITORIES=mon-org/repo1,mon-org/repo2
- LOG_LEVEL=info
restart: "no" # Exécution unique, à déclencher via cron
Déclencher via cron sur l'hôte :
# Exécuter Renovate toutes les heures
0 * * * * docker compose -f /opt/renovate/docker-compose.yml run --rm renovate
Avec un fichier de configuration global
// config.js (monté dans le conteneur)
module.exports = {
platform: 'github',
token: process.env.RENOVATE_TOKEN,
repositories: [
'mon-org/repo1',
'mon-org/repo2',
],
onboarding: true,
requireConfig: 'optional',
};
docker run --rm \
-v $(pwd)/config.js:/usr/src/app/config.js \
-e RENOVATE_TOKEN=ghp_xxxxxxxxxxxx \
ghcr.io/renovatebot/renovate
Configuration renovate.json
Le fichier renovate.json dans chaque dépôt contrôle le comportement de Renovate pour ce dépôt.
Configuration minimale
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
]
}
Configuration avancée
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended"],
"timezone": "Europe/Paris",
"schedule": ["before 6am on monday"],
"labels": ["dependencies"],
"assignees": ["mon-user"],
"packageRules": [
{
"matchManagers": ["docker-compose", "dockerfile"],
"matchUpdateTypes": ["patch"],
"automerge": true
},
{
"matchPackageNames": ["postgres", "redis", "mongodb"],
"enabled": false
},
{
"groupName": "Argo CD",
"matchPackageNames": ["argoproj/argo-cd"]
}
]
}
Managers courants
Docker / docker-compose
# docker-compose.yml - Renovate détecte et met à jour les images
services:
app:
image: ghcr.io/org/my-app:1.2.3 # Renovate ouvrira une PR pour 1.2.4
db:
image: postgres:15.4 # -> PR pour postgres:16.x
Helm values
# values.yaml ou Chart.yaml
dependencies:
- name: postgresql
version: "13.4.0" # Renovate met à jour la version du chart
repository: https://charts.bitnami.com/bitnami
Flux / Argo CD
# kustomization.yaml géré par FluxCD
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
spec:
postBuild:
substitute:
app_version: "1.2.3" # Renovate peut mettre à jour cette valeur
Renovate supporte les HelmRelease FluxCD et les Application Argo CD nativement.
Go modules
// go.mod
module my-app
require (
github.com/gin-gonic/gin v1.9.0 // -> PR pour v1.9.1
github.com/go-redis/redis v8.11.5 // -> PR pour mise à jour
)
Auto-merge
{
"packageRules": [
{
"matchUpdateTypes": ["patch", "pin", "digest"],
"matchCurrentVersion": "!/^0/",
"automerge": true,
"automergeType": "pr",
"automergeStrategy": "squash"
}
]
}
Mise à jour
# Docker : pull la nouvelle image
docker pull ghcr.io/renovatebot/renovate:latest
Troubleshooting
# Activer les logs debug
docker run --rm \
-e RENOVATE_TOKEN=ghp_xxxx \
-e LOG_LEVEL=debug \
ghcr.io/renovatebot/renovate \
mon-org/mon-repo 2>&1 | tee renovate.log
# Dry-run (affiche les PRs qui seraient créées sans les créer)
docker run --rm \
-e RENOVATE_TOKEN=ghp_xxxx \
-e RENOVATE_DRY_RUN=full \
ghcr.io/renovatebot/renovate \
mon-org/mon-repo
# Valider la config renovate.json (outil dédié)
npx --yes renovate-config-validator renovate.json
# Ou via Docker
docker run --rm \
-v $(pwd)/renovate.json:/usr/src/app/renovate.json \
ghcr.io/renovatebot/renovate \
config-validator
Ressources
- Documentation officielle : https://docs.renovatebot.com/
- GitHub : https://github.com/renovatebot/renovate
- GitHub App hébergée : https://github.com/apps/renovate
- Config options : https://docs.renovatebot.com/configuration-options/
- Managers : https://docs.renovatebot.com/modules/manager/
- Releases : https://github.com/renovatebot/renovate/releases