Pour ce TP, nous allons préparer les éléments nécessaires : nous créerons un nouveau projet GitHub à partir du starter kit, puis nous l’explorerons afin de comprendre son fonctionnement ainsi que les dépendances liées aux packages de configuration du toolkit
Le starter kit est disponible ici : https://github.com/Zenika/sk-packages-demo
- Forker le repository dans votre compte GitHub
- Cloner votre fork en local
- Installer les dépendances
- Lancer le projet
- Vérifier que tout fonctionne correctement
- Explorer le projet pour comprendre son architecture et fonctionnement, notamment le
package.json
Les packages du toolkit sont définis ici : https://github.com/Zenika/sk-packages-tools
- Parcourir le repository
- Comprendre comment il est structuré
- Identifier comment il est utilisé côté starter kit :
- Où est-il déclaré ?
- Comment est-il consommé ?
- Quelle version est utilisée ?
Maintenant que nous disposons d’une application fonctionnelle basée sur le starter kit, nous allons y installer Renovate pour automatiser la mise à jour de nos dépendances.
- Ajouter l’application renovate à votre GitHub : https://github.com/apps/renovate/
- Autoriser Renovate à accéder à votre projet fraichement créé
- Vous allez être rediriger vers le dashboard web de renovate (https://developer.mend.io/)
- Installer l’option
Renovate Onlysur le projet - Sélectionner le mode
Scan and Alert
- Installer l’option
Renovate devrait maintenant avoir accès à votre projet ! Depuis le dashboard, vous pouvez vérifier qu’il a probablement commencé à analyser vos fichiers.
Afin que renovate soit officiellement opérationnel, vous allez devoir l'initialiser :
- Une PR de onboarding devrait apparaître sur votre projet
- Vérifier son contenu et merger la
Cette PR va initialiser la configuration par défaut de Renovate, nous verrons par la suite comment la personnaliser.
Après le merge, Renovate peut commencer à créer des PR automatiquement.
🚨 Il se peut que la PR n'apparaisse pas et que votre renovate soit en "silent mode".
👉 Sur le dashboard, aller dans
Settings➡️Dependencieset désactiver "silent mode".✅ Le reste des options devrait rester activés. Sauvegarder et vérifier que renovate c'est bien relancé sur le dashboard.
Vous pouvez consulter le dashboard :
- https://developer.mend.io/
- Ou l’issue GitHub créée automatiquement
👀 Observer les dépendances détectées et les PR créées afin de comprendre le comportement par défaut de Renovate.
schedule : https://docs.renovatebot.com/configuration-options/#schedule
packageRules : https://docs.renovatebot.com/configuration-options/#packagerules
groupName : https://docs.renovatebot.com/configuration-options/#groupname
prConcurrentLimit : https://docs.renovatebot.com/configuration-options/#prconcurrentlimit
osvVulnerabilityAlerts : https://docs.renovatebot.com/configuration-options/#osvvulnerabilityalerts
vulnerabilityAlerts : https://docs.renovatebot.com/configuration-options/#vulnerabilityalerts
A l'aide de la documentation, mettre à jour le fichier renovate.json afin de :
- Etendre la configuration de base proposée par le toolkit
extends- La configuration se trouve ici :
github>Zenika/sk-packages-tools//packages/renovate/default
- Détecter les dépendances avec une faille de sécurité
osvVulnerabilityAlerts, vulnerabilityAlerts
- Limiter les PR concurrentes à 5
prConcurrentLimit
- Ajouter un préfixe aux branches Renovate :
renovate-pour facilement les différencier des autres branchesbranchPrefix
- Ajouter un préfixe de commit pour les PR
packageRules, commitMessagePrefix
- Attendre au minium 3 jours avant d'autoriser une mise à jour de dépendance
packageRules, minimumReleaseAge, matchDatasources
- Créer un groupe pour autoriser l'automerge uniquement sur les patchs
packageRules, matchUpdateTypes, automerge
💡 N'hésitez pas à ajouter d'autres règles que vous pensez intéressante !
- Une configuration claire et maîtrisée
- Un comportement cohérent
- Un nombre de PR raisonnable
- Un auto-merge sécurisé
Une solution est disponible sur une branche du starter kit. Comparer votre configuration avec la solution après avoir tenté l’exercice.