· 5 min read

Renovate bot pour en finir avec la mise à jour de vos dépendances sur GitLab

Vous perdez un temps fou à mettre à jour les dépendances de vos projets GitLab ? Renovabot peut vous aider ! Voyons comment l'utiliser simplement.

Vous perdez un temps fou à mettre à jour les dépendances de vos projets GitLab ? Renovabot peut vous aider ! Voyons comment l'utiliser simplement.

La gestion des dépendances et les vulnérabilités

Vous le savez peut-être, les dépendances sont un élément essentiel d’un projet. Elles permettent de réutiliser du code déjà écrit par d’autres personnes, de gagner du temps et de ne pas réinventer la roue.

Mais les dépendances peuvent également être une source de vulnérabilités. Si une dépendance est compromise, il est possible que l’exploitation de cette vulnérabilité permette à un attaquant d’accéder à votre système ou d’y injecter du code malveillant.

Dès lors, il est important de mettre à jour ses dépendances régulièrement, pour éviter les vulnérabilités, bénéficier des dernières fonctionnalités et améliorations, et s’assurer que les dépendances ne sont pas compromises, avec comme effet bénéfique de vous simplifier les montées de version majeures.

Renovate ? Qu’est-ce que c’est ?

Renovate est un bot qui permet de mettre à jour les dépendances de vos projets GitLab (et d’autres systèmes de gestion de code comme GitHub, GitLab, Bitbucket, etc.) en ouvrant pour vous des merge requests avec les dernières versions des dépendances.

Imaginez le gain de temps que vous pourriez avoir si vous n’aviez plus qu’à revoir les merge requests ouverts par Renovate, plutôt que de vous préoccuper vous-même de mettre à jour les dépendances de vos projets.

Notre objectif

L’objectif de ce post est de vous montrer comment :

  • mettre en place un renovate bot pour vos projets GitLab
  • configurer ce bot pour mettre à jour vos dépendances une fois par semaine
  • centraliser la configuration de renovate pour simplifier la gestion des dépendances de vos projets

Mise en place du bot

Pour la démo, je supppose que vous disposez d’un groupe GitLab, que vous avez accès en admin a la configuration de ce groupe 😅 (ou créer un groupe pour la démo)

Création d’un bot GitLab

Suivant votre version de GitLab (Niveau d’accès ou self-hosted), vous pouvez créer un bot GitLab de différentes manières, mais nous allons suivre la voie la plus simple qui fonctionne à tous les coups, c’est-à-dire créer un utilisateur classique. Par exemple j’ai créé un utilisateur avec le nom renovate-bot-yoandev.

Inviter le bot dans le groupe

Rendez-vous dans la section “Members” du groupe et ajoutez votre bot en tant que “Developer”.

Création d’un projet “outdated” dans le groupe

  • Nous allons récupérer une version “ancienne” su projet “Symfony Demo”
  • Créer un nouveau repository dans le groupe
  • Y pousser le projet Symfony Demo

Pour récupérer le projet Symfony Demo au tag v2.5.1, vous pouvez utiliser la commande suivante :

git clone --depth 1 --branch v2.5.1 git@github.com:symfony/demo.git

On supprime le dossier .git pour ne pas avoir de commit initial :

rm -rf demo/.git

On crée un nouveau repository dans le groupe et on y pousse le projet :

git init --initial-branch=main
git remote add origin git@gitlab.com:votre-groupe/symfony-demo.git
git add .
git commit -m "Initial commit"
git push -u origin main

Création d’un repository “renovate-bot”

  • Créer un nouveau repository dans le groupe renovate-bot
  • Récupérer le repository renovate-bot en local

Dans ce projet, nous allons créer un unique fichier .gitlab-ci.yml qui va nous permettre de lancer le bot Renovate (via un schedule) :

include:
    - project: 'renovate-bot/renovate-runner'
      file: '/templates/renovate.gitlab-ci.yml'

Nous allons utiliser un template “sur étagère” pour nous simplifier la vie !

Ce projet nous propose une configuration prête à l’emploi pour lancer le bot Renovate, avec une configuration minimale.

Template Renovate

Paramétrer les variables d’environnement

Pour que le bot fonctionne, nous devons paramétrer les variables d’environnement suivantes, au niveau du groupe, bien que nous pourrions les paramétrer au niveau du projet renovate-bot :

RENOVATE_TOKEN

C’est le token d’accès à GitLab que va utiliser le bot pour consulter les projets, soumettre les merge requests, etc.

Pour le générer, il faut, depuis une session GitLab avec le compte renovate-bot-yoandev (ou le compte que vous avez créé), se rendre dans les “Settings” -> “Access Tokens” et créer un nouveau token avec le nom Renovate Bot et les permissions suivantes :

  • api
  • write_repository

GITHUB_COM_TOKEN

Ce token est utilisé pour permettre à Renovate d’accéder aux versions des dépendances sur GitHub.com.

Pour le générer, il faut se rendre sur GitHub > New fine-grained personal access token et créer un nouveau token avec la permission Public Repositories (read-only).

RENOVATE_EXTRA_FLAGS

Cette variable d’environnement permet de passer des options supplémentaires à Renovate, notamment pour configurer les Repositories que le bot va analyser.

Nous lui passons la valeur suivante :

--autodiscover=true --onboarding=false
  • autodiscover=true : permet de détecter automatiquement les dépendances
  • onboarding=false : permet de désactiver le mode onboarding (Le bot n’analysera que les projets avec un fichier renovate.json présent à la racine du projet - on y reviendra plus tard)

Créer un fichier renovate.json dans le projet Symfony Demo

Dans le projet Symfony Demo, créer un fichier renovate.json à la racine du projet avec le contenu suivant :

{
  "extends": [
    "config:base"
  ]
}

Programmer le bot Renovate

Pour programmer le bot Renovate, il faut se rendre dans le menu “Build > Pipeline schedules” et cliquer sur le bouton “New schedule” :

  • Nom : Renovate Bot
  • Choisir la timezone qui vous convient
  • Choisir la programmation qui vous convient (format cron)
  • Choisir la branche (je recommande main)

Vous pouvez lancer le bot manuellement pour vérifier que tout fonctionne correctement.

Vérifier que le bot fonctionne

En lançant le bot manuellement, vous devriez obtenir plusieurs merge requests ouvertes sur le projet Symfony Demo.

Chaque merge request vous donne un aperçu des dépendances qui ont été mises à jour, et vous permet de les revoir avant de les appliquer.

Conclusion

Vous avez maintenant un bot Renovate qui vous permet de mettre à jour les dépendances de vos projets GitLab une fois par semaine (et ça marche avec les dépendances Composer, NPM, Yarn, Docker, etc.)

Vous pouvez également lancer le bot manuellement pour vérifier que tout fonctionne correctement.

Pour aller plus loin

Back to Blog

Comments (0)

Loading comments...

Leave a Comment