Il existe différentes façons de personnaliser vos Dependabot pull requests pour mieux les adapter à vos processus internes.
Par exemple, pour intégrer les demandes de fusion de Dependabot dans vos pipelines CI/CD, elle peut appliquer des étiquettes personnalisées aux demandes de fusion, que vous pouvez ensuite utiliser pour déclencher des workflows d’actions.
Il existe plusieurs options de personnalisation différentes qui peuvent toutes être utilisées en combinaison et adaptées par écosystème de packages.
Ajout automatique de personnes responsables
Par défaut, Dependabot crée des demandes de tirage sans personne assignée.
Pour attribuer automatiquement des demandes de tirage à une équipe de sécurité désignée, vous pouvez utiliser assignees pour définir ces valeurs par écosystème de packages.
L’exemple de fichier dependabot.yml ci-dessous change la configuration npm afin que toutes les demandes de tirage ouvertes avec des mises à jour de version et de sécurité pour npm contiennent :
- Un individu («
user-name») automatiquement affecté aux demandes de tirage.
# `dependabot.yml` file with
# assignee for all npm pull requests
version: 2
updates:
# Keep npm dependencies up to date
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Raise all npm pull requests with assignees
assignees:
- "user-name"
# `dependabot.yml` file with
# assignee for all npm pull requests
version: 2
updates:
# Keep npm dependencies up to date
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Raise all npm pull requests with assignees
assignees:
- "user-name"
Ajout automatique de réviseurs
Par défaut, Dependabot crée des pull requests sans aucun réviseur.
Pour que les mises à jour de sécurité de votre projet soient traitées rapidement par l’équipe concernée, vous pouvez ajouter automatiquement des relecteurs aux Dependabot pull requests à l’aide d’un fichier CODEOWNERS. Consultez À propos des propriétaires de code.
Étiquetage des demandes de tirage avec des étiquettes personnalisées
Par défaut, Dependabot crée des pull requests avec l’étiquette dependencies.
Dependabot applique également une étiquette d’écosystème, telle que java, npm ou github-actions, aux pull requests.
Dependabot ajoute à toutes les pull requests l’étiquette dependencies ainsi que l’étiquette de l’écosystème, y compris pour les mises à jour portant sur un seul écosystème, afin d’améliorer le filtrage et la priorisation.
Dependabot crée les étiquettes par défaut qu’il applique aux pull requests si elles n’existent pas déjà dans le référentiel. Si vous souhaitez utiliser des étiquettes personnalisées au lieu des valeurs par défaut, vous pouvez définir l’option labels dans votre dependabot.yml fichier par écosystème de package ; cela remplace les valeurs par défaut. Pour plus d’informations, consultez « Gestion des étiquettes » et labels.
Si les étiquettes de version sémantique (SemVer) sont présentes dans le référentiel, Dependabot elles s’appliquent également automatiquement pour indiquer le type de mise à jour de version (majorou minor``patch). Ces étiquettes sont appliquées en plus des étiquettes personnalisées que vous définissez.
Vous pouvez utiliser labels pour remplacer les étiquettes par défaut et spécifier vos propres étiquettes personnalisées par écosystème de packages. Cela est utile si, par exemple, vous souhaitez :
- Utiliser des étiquettes pour attribuer une priorité à certaines demandes de tirage.
- Utiliser des étiquettes pour déclencher un autre workflow, par exemple ajouter automatiquement la demande de tirage à un tableau de projet.
L’exemple de fichier dependabot.yml ci-dessous change la configuration npm afin que toutes les demandes de tirage ouvertes avec des mises à jour de version et de sécurité pour npm aient des étiquettes personnalisées.
# `dependabot.yml` file with
# customized npm configuration
version: 2
updates:
# Keep npm dependencies up to date
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Raise all npm pull requests with custom labels
labels:
- "npm dependencies"
- "triage-board"
# `dependabot.yml` file with
# customized npm configuration
version: 2
updates:
# Keep npm dependencies up to date
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Raise all npm pull requests with custom labels
labels:
- "npm dependencies"
- "triage-board"
La définition de cette option affecte aussi les demandes de tirage pour des mises à jour de sécurité des fichiers manifeste de ce gestionnaire de packages, sauf si vous utilisez target-branch pour rechercher les mises à jour de version sur une branche autre que celle par défaut.
Voir aussi labels.
Ajout d’un préfixe aux messages de commit
Par défaut, Dependabot tente de détecter vos préférences de message de validation et d’utiliser des modèles similaires. En outre, Dependabot renseigne les titres des pull requests en fonction des messages de commit.
Vous pouvez spécifier votre propre préfixe pour les messages de commit de Dependabot (et les titres des pull requests) pour un écosystème de paquets donné. Cela peut être utile si, par exemple, vous exécutez des automatisations traitant les messages de commit ou les titres des demandes de tirage.
Pour spécifier explicitement vos préférences, utilisez commit-message avec les options prises en charge suivantes :
prefix:- Spécifie un préfixe pour tous les messages de commit.
- Le préfixe est également ajouté au début du titre de la demande de tirage.
prefix-development:- Spécifie un préfixe distinct pour tous les messages de commit qui mettent à jour les dépendances de développement, comme défini par le gestionnaire de packages ou l’écosystème.
- Pris en charge pour
bundler,composer,mix,maven,npm,pipetuv.
include: "scope":- Spécifie que tout préfixe est suivi des types de dépendances (
depsoudeps-dev) mis à jour dans le commit.
- Spécifie que tout préfixe est suivi des types de dépendances (
L’exemple ci-dessous montre plusieurs options différentes, adaptées par écosystème de packages :
# Customize commit messages
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
commit-message:
# Prefix all commit messages with "npm: "
prefix: "npm"
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"
commit-message:
# Prefix all commit messages with "[docker] " (no colon, but a trailing whitespace)
prefix: "[docker] "
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "weekly"
# Prefix all commit messages with "Composer" plus its scope, that is, a
# list of updated dependencies
commit-message:
prefix: "Composer"
include: "scope"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
# Include a list of updated dependencies
# with a prefix determined by the dependency group
commit-message:
prefix: "pip prod"
prefix-development: "pip dev"
# Customize commit messages
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
commit-message:
# Prefix all commit messages with "npm: "
prefix: "npm"
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"
commit-message:
# Prefix all commit messages with "[docker] " (no colon, but a trailing whitespace)
prefix: "[docker] "
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "weekly"
# Prefix all commit messages with "Composer" plus its scope, that is, a
# list of updated dependencies
commit-message:
prefix: "Composer"
include: "scope"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
# Include a list of updated dependencies
# with a prefix determined by the dependency group
commit-message:
prefix: "pip prod"
prefix-development: "pip dev"
La définition de cette option affecte aussi les demandes de tirage pour des mises à jour de sécurité des fichiers manifeste de ce gestionnaire de packages, sauf si vous utilisez target-branch pour rechercher les mises à jour de version sur une branche autre que celle par défaut.
Voir aussi commit-message.
Association des demandes de tirage avec un jalon
Les jalons vous aident à suivre la progression des groupes de demandes de tirage (ou problèmes) vers un objectif de projet ou une version. Avec Dependabot, vous pouvez utiliser l’option milestone pour associer les pull requests liées aux mises à jour de dépendances à un jalon spécifique.
Vous devez spécifier l’identificateur numérique du jalon et non son étiquette. Pour rechercher l’identificateur numérique, vérifiez la dernière partie de l’URL de la page, après milestone. Par exemple, pour https://github.com/<org>/<repo>/milestone/3, « 3 » est l’identificateur numérique du jalon.
# Specify a milestone for pull requests
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Associate pull requests with milestone "4"
milestone: 4
# Specify a milestone for pull requests
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Associate pull requests with milestone "4"
milestone: 4
La définition de cette option affecte aussi les demandes de tirage pour des mises à jour de sécurité des fichiers manifeste de ce gestionnaire de packages, sauf si vous utilisez target-branch pour rechercher les mises à jour de version sur une branche autre que celle par défaut.
Consultez également milestone et À propos des jalons.
Personnalisation des noms de branches de pull request
Dependabot génère une branche pour chaque pull request. Chaque nom de branche inclut dependabot ainsi que le nom du gestionnaire de packages et la dépendance à mettre à jour. Par défaut, ces parties du nom de la branche sont séparées par un symbole /, par exemple :
dependabot/npm_and_yarn/next_js/acorn-6.4.1
Vous pouvez personnaliser les noms de branche à l’aide de l’option pull-request-branch-name avec les paramètres suivants : separator, , prefix``max-length, , word-separator, branch-name-caseet template. Toutes les options sont composables et vous pouvez combiner n’importe laquelle d’entre elles. Pour obtenir la référence complète de chaque paramètre, consultez pull-request-branch-name.
Combinaison d’options de mise en forme
Vous pouvez combiner separator, , word-separator``branch-name-case, max-lengthet template pour produire des noms de branche qui répondent aux exigences de votre système. Par exemple, la compatibilité des balises Docker, les conventions de nommage d’Azure Container Registry ou les limites de longueur des branches Kubernetes.
Lorsque template est défini avec d’autres options, la mise en forme est appliquée en post-traitement après le rendu du modèle, dans l’ordre suivant : remplacement du séparateur, remplacement du séparateur de mots, conversion de casse, puis troncation à la longueur maximale.
# Combine template with formatting options
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
pull-request-branch-name:
template: "{prefix}/{package_manager}/{dependency}-{version}"
separator: "-"
word-separator: "-"
branch-name-case: "lowercase"
max-length: 80
# Combine template with formatting options
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
pull-request-branch-name:
template: "{prefix}/{package_manager}/{dependency}-{version}"
separator: "-"
word-separator: "-"
branch-name-case: "lowercase"
max-length: 80
- Avant (valeur par défaut) :
dependabot/npm_and_yarn/Lodash-4.17.21 - Après (avec la configuration ci-dessus) :
dependabot-npm-and-yarn-lodash-4.17.21
Lorsqu’un nom de branche dépasse max-length, il est tronqué avec un suffixe de hachage pour préserver l’unicité.
Exemple complet avec des groupes multi-écosystèmes
L’exemple suivant dependabot.yml illustre toutes les options disponibles dans différents écosystèmes, notamment la configuration de groupe multi-écosystème :
# Full example demonstrating all branch name options
version: 2
multi-ecosystem-groups:
infrastructure:
schedule:
interval: "weekly"
pull-request-branch-name:
template: "{prefix}/infra/{name}"
word-separator: "-"
branch-name-case: "lowercase"
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
pull-request-branch-name:
separator: "-"
word-separator: "-"
branch-name-case: "lowercase"
groups:
frontend-deps:
patterns: ["react*", "next*"]
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "monthly"
pull-request-branch-name:
template: "{prefix}/{package_manager}/{dependency}-{version}"
max-length: 60
- package-ecosystem: "pip"
directory: "/backend"
schedule:
interval: "weekly"
pull-request-branch-name:
prefix: "deps"
branch-name-case: "lowercase"
groups:
django-deps:
patterns: ["django*"]
# These entries participate in the "infrastructure" multi-ecosystem group
- package-ecosystem: "docker"
directory: "/infra"
patterns: ["nginx", "redis", "postgres"]
multi-ecosystem-group: "infrastructure"
- package-ecosystem: "terraform"
directory: "/infra"
patterns: ["hashicorp/*"]
multi-ecosystem-group: "infrastructure"
# Full example demonstrating all branch name options
version: 2
multi-ecosystem-groups:
infrastructure:
schedule:
interval: "weekly"
pull-request-branch-name:
template: "{prefix}/infra/{name}"
word-separator: "-"
branch-name-case: "lowercase"
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
pull-request-branch-name:
separator: "-"
word-separator: "-"
branch-name-case: "lowercase"
groups:
frontend-deps:
patterns: ["react*", "next*"]
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "monthly"
pull-request-branch-name:
template: "{prefix}/{package_manager}/{dependency}-{version}"
max-length: 60
- package-ecosystem: "pip"
directory: "/backend"
schedule:
interval: "weekly"
pull-request-branch-name:
prefix: "deps"
branch-name-case: "lowercase"
groups:
django-deps:
patterns: ["django*"]
# These entries participate in the "infrastructure" multi-ecosystem group
- package-ecosystem: "docker"
directory: "/infra"
patterns: ["nginx", "redis", "postgres"]
multi-ecosystem-group: "infrastructure"
- package-ecosystem: "terraform"
directory: "/infra"
patterns: ["hashicorp/*"]
multi-ecosystem-group: "infrastructure"
Cette configuration produit les noms de branche suivants :
| Scénario | Strategy | Nom de la branche |
|---|---|---|
| mise à jour de lodash avec npm | Solo | dependabot-npm-and-yarn-lodash-4.17.21 |
| Mise à jour du groupe frontend-deps de npm | Groupé | dependabot-npm-and-yarn-frontend-deps-fc93691fd4 |
| mise à jour Docker nginx solo | Solo | dependabot/ |
| mise à jour de Django avec pip | Solo | deps/ |
| mise à jour du groupe pip django-deps | Groupé | deps/ |
| Groupe d’infrastructure inter-écosystèmes (Docker + Terraform) | Multi-écosystème | dependabot/ |
Remarque
Pour les groupes multi-écosystèmes :
- L’élément
pull-request-branch-namede l’entréemulti-ecosystem-groupsdéfinit le nom de la branche de PR de groupe inter-écosystèmes. - Les entrées individuelles
updatesqui spécifientmulti-ecosystem-groupne peuvent pas avoir leur proprepull-request-branch-name. La configuration au niveau du groupe est prioritaire et est la seule utilisée pour ces entrées.
{package_manager} n’est pas disponible dans les modèles de groupe multi-écosystème, car le groupe s’étend sur plusieurs écosystèmes.
- Une synthèse de contenu est toujours ajoutée automatiquement aux branches de groupe multi-écosystème pour garantir l’unicité.
Comment la configuration du nom de branche s’applique
- La configuration se fait pour chaque entrée de mise à jour : chaque entrée individuelle
package-ecosystempeut avoir sa propre configuration du nom de branche. Les entrées affectées à un groupe multi-écosystème utilisent plutôt la configuration au niveau du groupe. - Les PR existantes ne sont pas affectées : les modifications s’appliquent uniquement aux PR nouvellement créées.
- Le comportement par défaut est inchangé : si vous ne configurez aucune option, les noms de branche restent exactement comme ils le sont aujourd’hui.
La définition de cette option affecte aussi les demandes de tirage pour des mises à jour de sécurité des fichiers manifeste de ce gestionnaire de packages, sauf si vous utilisez target-branch pour rechercher les mises à jour de version sur une branche autre que celle par défaut.
Ciblage des demandes de tirage vers une branche autre que celle par défaut
Par défaut, Dependabot recherche les fichiers manifeste sur la branche par défaut et ouvre des demandes de tirage pour les mises à jour visant la branche par défaut.
En règle générale, il est généralement plus logique de conserver les vérifications et les mises à jour de Dependabot sur la branche par défaut. Toutefois, dans certains cas, il peut être nécessaire de spécifier une branche cible différente. Si, par exemple, les processus de votre équipe exigent que vous testiez et validiez d’abord les mises à jour sur une branche non destinée à la production, vous pouvez utiliser target-branch pour spécifier une autre branche sur laquelle Dependabot doit ouvrir des demandes de fusion.
Remarque
Dependabot crée des pull requests pour les mises à jour de sécurité uniquement vers la branche par défaut. Si vous utilisez target-branch, alors tous les paramètres de configuration de ce gestionnaire de packages s’appliqueront uniquement aux mises à jour de version et non aux mises à jour de sécurité.
# Specify a non-default branch for pull requests for pip
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
# Raise pull requests for version updates
# to pip against the `develop` branch
target-branch: "develop"
# Labels on pull requests for version updates only
labels:
- "pip dependencies"
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Check for npm updates on Sundays
day: "sunday"
# Labels on pull requests for security and version updates
labels:
- "npm dependencies"
# Specify a non-default branch for pull requests for pip
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
# Raise pull requests for version updates
# to pip against the `develop` branch
target-branch: "develop"
# Labels on pull requests for version updates only
labels:
- "pip dependencies"
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
# Check for npm updates on Sundays
day: "sunday"
# Labels on pull requests for security and version updates
labels:
- "npm dependencies"
Voir aussi target-branch.