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

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 copy
# `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](/fr/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners).

## É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](/fr/issues/using-labels-and-milestones-to-track-work/managing-labels) » et [`labels`](/fr/code-security/reference/supply-chain-security/dependabot-options-reference#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 (`major`ou `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 copy
# `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`](/fr/code-security/reference/supply-chain-security/dependabot-options-reference#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 copy
# 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`](/fr/code-security/reference/supply-chain-security/dependabot-options-reference#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 copy
# 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`](/fr/code-security/reference/supply-chain-security/dependabot-options-reference#milestone--) et [À propos des jalons](/fr/issues/using-labels-and-milestones-to-track-work/about-milestones).

## 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-case`et `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`](/fr/code-security/reference/supply-chain-security/dependabot-options-reference#pull-request-branch-name--).

### Combinaison d’options de mise en forme

Vous pouvez combiner `separator`, , `word-separator``branch-name-case`, `max-length`et `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 copy
# 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 copy
# 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/docker/nginx-1.25.0`                   |
| mise à jour de Django avec pip                                 | Solo             | `deps/pip/django-4.2.1`                            |
| mise à jour du groupe pip django-deps                          | Groupé           | `deps/pip/django-deps-a1b2c3d4e5`                  |
| Groupe d’infrastructure inter-écosystèmes (Docker + Terraform) | Multi-écosystème | `dependabot/infra/infrastructure-fc93691fd4`       |

> \[!NOTE]
> 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-group`**ne 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.

> \[!NOTE]
> 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 copy
# 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`](/fr/code-security/reference/supply-chain-security/dependabot-options-reference#target-branch-).