Par défaut, Dependabot ouvre une nouvelle demande de tirage pour mettre à jour chaque dépendance. Lors de l’activation des mises à jour de sécurité, de nouvelles demandes d’extraction sont ouvertes chaque fois qu’une dépendance vulnérable est trouvée. En configurant la mise à jour des versions pour un ou plusieurs écosystèmes, de nouvelles demandes de tirage sont ouvertes lorsque de nouvelles versions de dépendances sont disponibles, à la fréquence définie dans le fichier dependabot.yml
.
Si votre projet comporte de nombreuses dépendances, vous risquez de devoir examiner et fusionner un très grand nombre de demandes de tirage Dependabot à examiner et fusionner, ce qui peut rapidement devenir difficile à gérer.
Il existe quelques options de personnalisation que vous pouvez implémenter pour optimiser les demandes de tirage de mise à jour Dependabot afin de les aligner sur vos processus, par exemple :
- Contrôler la fréquence à laquelle Dependabot vérifie les nouvelles versions de vos dépendances avec
schedule
. - Hiérarchiser les mises à jour significatives avec
groups
.
Contrôle de la fréquence et du minutage des mises à jour des dépendances
Dependabot exécute ses vérifications pour les mises à jour de version à une fréquence définie par vous dans le fichier de configuration (où le champ requis, schedule.interval
, doit être défini sur daily
, weekly
ou monthly
).
Par défaut, Dependabot équilibre sa charge de travail en affectant un temps aléatoire pour vérifier et déclencher des demandes de tirage pour les mises à jour des dépendances.
Toutefois, pour réduire les distractions ou pour mieux organiser le temps et les ressources nécessaires à l’examen et au traitement des mises à jour de versions, il peut s’avérer utile de modifier la fréquence et le minutage. Par exemple, vous pouvez préférer Dependabot pour exécuter des vérifications hebdomadaires plutôt que quotidiennes concernant les mises à jour, et à un moment qui garantit la remontée des demandes de triage avant la session de triage de votre équipe.
Vous pouvez utiliser schedule
avec une combinaison d’options pour modifier la fréquence et le minutage du moment où Dependabot recherche les mises à jour de version
L’exemple de fichier dependabot.yml
ci-dessous modifie la configuration npm pour spécifier que Dependabot doit vérifier les mises à jour de version des dépendances npm tous les jours à 02h00 Heure japonaise (UTC +09:00).
# `dependabot.yml` file with # customized schedule for version updates version: 2 updates: # Keep npm dependencies up to date - package-ecosystem: "npm" directory: "/" # Check the npm registry every week on Tuesday at 02:00 Japan Standard Time (UTC +09:00) schedule: interval: "weekly" day: "tuesday" time: "02:00" timezone: "Asia/Tokyo"
# `dependabot.yml` file with
# customized schedule for version updates
version: 2
updates:
# Keep npm dependencies up to date
- package-ecosystem: "npm"
directory: "/"
# Check the npm registry every week on Tuesday at 02:00 Japan Standard Time (UTC +09:00)
schedule:
interval: "weekly"
day: "tuesday"
time: "02:00"
timezone: "Asia/Tokyo"
Consultez également planification.
Hiérarchiser les mises à jour significatives
Vous pouvez utiliser groups
pour consolider les mises à jour de plusieurs dépendances dans une requête de tirage unique. Ceci vous permet de concentrer votre temps d’examen sur les mises à jour à haut risque et de minimiser le temps consacré à l’examen des mises à jour de versions mineures. Par exemple, vous pouvez combiner des mises à jour mineures ou des mises à jour de correctifs pour les dépendances de développement en une seule demande d’extraction, et consacrer un groupe à la sécurité ou aux mises à jour de version ayant un impact sur une zone clé de votre codebase.
Vous devez configurer des groupes par écosystème de packages individuel, puis vous pouvez créer des groupes multiples par écosystème de packages à l’aide d’une combinaison de critères :
- Type de dépendance :
dependency-type
. - Nom de dépendance :
patterns
etexclude-patterns
- Niveaux de version sémantique :
update-types
Pour afficher toutes les valeurs prises en charge pour chaque critère, consultez groups
.
Les exemples ci-dessous présentent plusieurs méthodes différentes pour créer des groupes de dépendances à l’aide des critères.
Exemple 1 : Trois groupes de mise à jour des versions
Dans cet exemple, ledependabot.yml
fichier :
- Créez trois groupes, appelés «
production-dependencies
», «development-dependencies
» et «rubocop
». - Utilisez
patterns
etdependency-type
pour inclure des dépendances dans le groupe. - Utilisez
exclude-patterns
pour exclure une dépendance (ou plusieurs dépendances) du groupe.
version: 2
updates:
# Keep bundler dependencies up to date
- package-ecosystem: "bundler"
directory: "/"
schedule:
interval: "weekly"
groups:
production-dependencies:
dependency-type: "production"
development-dependencies:
dependency-type: "development"
exclude-patterns:
- "rubocop*"
rubocop:
patterns:
- "rubocop*"
Par conséquent :
- Les mises à jour de version sont regroupées par type de dépendance.
- Les dépendances de développement correspondant au modèle
rubocop*
sont exclues du groupedevelopment-dependencies
. - Au lieu de cela, les dépendances de développement correspondant
rubocop*
seront incluses dans le grouperubocop
. En raison de l’ordre, les dépendances de production correspondantrubocop*
seront incluses dans le groupeproduction-dependencies
.
Exemple 2 : Mises à jour groupées avec dépendances exclues
Dans cet exemple, ledependabot.yml
fichier :
- Créez un groupe appelé «
support-dependencies
», dans le cadre d’une configuration Bundler personnalisée. - Utilisez
patterns
qui correspond au nom d’une dépendance (ou plusieurs dépendances) pour inclure des dépendances dans le groupe. - Utilisez
exclude-patterns
qui correspond au nom d’une dépendance (ou plusieurs dépendances) pour exclure les dépendances du groupe.
version: 2
updates:
# Keep bundler dependencies up to date
- package-ecosystem: "bundler"
directory: "/"
schedule:
interval: "weekly"
# Create a group of dependencies to be updated together in one pull request
groups:
# Specify a name for the group, which will be used in pull request titles
# and branch names
support-dependencies:
# Define patterns to include dependencies in the group (based on
# dependency name)
patterns:
- "rubocop" # A single dependency name
- "rspec*" # A wildcard string that matches multiple dependency names
- "*" # A wildcard that matches all dependencies in the package
# ecosystem. Note: using "*" may open a large pull request
# Define patterns to exclude dependencies from the group (based on
# dependency name)
exclude-patterns:
- "gc_ruboconfig"
- "gocardless-*"
Par conséquent :
- La majorité des dépendances pour bundler sont consolidées dans le groupe
support-dependencies
en raison du modèle générique (« * »), à part - Les dépendances qui correspondent
gc_ruboconfig
etgocardless-*
sont exclues du groupe, et Dependabot continuent de déclencher des demandes de tirage uniques pour ces dépendances. Cela peut être utile si les mises à jour de ces dépendances doivent être examinées de manière plus approfondie. - Pour
support-dependencies
, Dependabot ne créera que des demandes de tirage pour les mises à jour de version.
Exemple 3 : Demandes de tirage individuelles pour les mises à jour majeures et regroupées pour les mises à jour mineures/correctives
Dans cet exemple, ledependabot.yml
fichier :
- Créez un groupe appelé «
angular
». - Utilisez
patterns
qui correspond au nom d’une dépendance pour inclure des dépendances dans le groupe. - Utilisez
update-type
pour inclure uniquement des mises à jourminor
oupatch
dans le groupe.
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
groups:
# Specify a name for the group, which will be used in pull request titles
# and branch names
angular:
patterns:
- "@angular*"
update-types:
- "minor"
- "patch"
Par conséquent :
- Dependabot crée une demande de tirage groupée pour toutes les dépendances Angular qui ont une mise à jour mineure ou corrective.
- Toutes les mises à jour majeures continueront d’être déclenchées en tant que demandes de tirage individuelles.
Exemple 4 : Demandes de tirage regroupées pour les mises à jour mineures/correctives et aucune demande de tirage pour les mises à jour majeures
Dans cet exemple, ledependabot.yml
fichier :
- Créez trois groupes, appelés «
angular
» et «minor-and-patch
». - Utilisez
update-type
pour inclure uniquement des mises à jourminor
oupatch
pour les deux groupes. - Utilisez une
ignore
condition pour exclure les mises à jour demajor
version des@angular*
packages .
version: 2
updates:
# Keep npm dependencies up to date
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
groups:
angular:
patterns:
- "@angular*"
update-types:
- "minor"
- "patch"
ignore:
- dependency-name: "@angular*"
update-types: ["version-update:semver-major"]
Par conséquent :
- Les mises à jour mineures et correctives des versions pour les dépendances Angular sont regroupées en une seule demande de tirage.
- Les mises à jour de sécurité mineures et correctives pour les dépendances Angular sont également regroupées en une seule demande de tirage.
- Dependabot n’ouvre pas automatiquement les demandes de tirage pour les mises à jour majeures pour Angular.