Skip to main content

Personnalisation des demandes de tirage Dependabot pour les adapter à vos processus

Découvrez comment adapter vos demandes de tirage Dependabot pour mieux les adapter à vos propres workflows internes.

Qui peut utiliser cette fonctionnalité ?

Users with write access

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.
YAML
# `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.

YAML
# `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, pip et uv.
  • include: "scope" :
    • Spécifie que tout préfixe est suivi des types de dépendances (deps ou deps-dev) mis à jour dans le commit.

L’exemple ci-dessous montre plusieurs options différentes, adaptées par écosystème de packages :

YAML
# 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.

YAML
# 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.

YAML
# 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 :

YAML
# 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énarioStrategyNom de la branche
mise à jour de lodash avec npmSolodependabot-npm-and-yarn-lodash-4.17.21
Mise à jour du groupe frontend-deps de npmGroupédependabot-npm-and-yarn-frontend-deps-fc93691fd4
mise à jour Docker nginx soloSolodependabot/docker/nginx-1.25.0
mise à jour de Django avec pipSolodeps/pip/django-4.2.1
mise à jour du groupe pip django-depsGroupédeps/pip/django-deps-a1b2c3d4e5
Groupe d’infrastructure inter-écosystèmes (Docker + Terraform)Multi-écosystèmedependabot/infra/infrastructure-fc93691fd4

Remarque

Pour les groupes multi-écosystèmes :

  • L’élément pull-request-branch-name de l’entrée multi-ecosystem-groups définit le nom de la branche de PR de groupe inter-écosystèmes.
  • Les entrées individuelles updates qui spécifient multi-ecosystem-groupne peuvent pas avoir leur propre pull-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-ecosystem peut 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é.

YAML
# 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.