Skip to main content
Nous publions des mises à jour fréquentes de notre documentation, et la traduction de cette page peut encore être en cours. Pour obtenir les informations les plus actuelles, consultez la documentation anglaise.

Options de configuration pour le fichier dependabot.yml

Informations détaillées sur toutes les options que vous pouvez utiliser pour personnaliser la manière dont Dependabot gère vos référentiels.

Qui peut utiliser cette fonctionnalité

People with write permissions to a repository can configure Dependabot for the repository.

Remarque : Votre administrateur de site doit configurer les Dependabot updates pour votre instance GitHub Enterprise Server afin que vous puissiez utiliser cette fonctionnalité. Pour plus d’informations, consultez « Activation de Dependabot pour votre entreprise ».

À propos du fichier dependabot.yml

Le fichier de configuration Dependabot, dependabot.yml, utilise la syntaxe YAML. Si vous débutez avec YAML et que vous souhaitez en savoir plus, consultez « Découvrir YAML en cinq minutes ».

Vous devez stocker ce fichier dans le répertoire .github de votre dépôt. Quand vous ajoutez ou mettez à jour le fichier dependabot.yml, une recherche immédiate des mises à jour de version est déclenchée. Pour plus d’informations et obtenir un exemple, consultez « Configuration de mises à jour de version Dependabot ».

Toutes les options qui affectent également les mises à jour de sécurité sont utilisées la prochaine fois qu’une alerte de sécurité déclenche une demande de tirage (pull request) pour une mise à jour de sécurité. Pour plus d’informations, consultez « Configuration des mises à jour de sécurité Dependabot ».

Remarque : Vous ne pouvez pas configurer les Dependabot alerts en utilisant le fichier dependabot.yml.

Le fichier dependabot.yml a deux clés de niveau supérieur obligatoires : version et updates. Vous pouvez éventuellement inclure une clé registries de premier niveau. Le fichier doit commencer par version: 2.

Options de configuration pour le fichier dependabot.yml

La clé updates de niveau supérieur est obligatoire. Vous l’utilisez pour configurer la façon dont Dependabot met à jour les versions ou les dépendances de votre projet. Chaque entrée configure les paramètres de mise à jour pour un gestionnaire de package particulier. Vous pouvez utiliser les options suivantes.

OptionObligatoireMises à jour de sécuritéMises à jour de versionDescription
package-ecosystemXXGestionnaire de package à utiliser
directoryXXEmplacement des manifestes de package
schedule.intervalXXFréquence de la recherche des mises à jour
allowXXPersonnaliser les mises à jour à autoriser
assigneesXXDestinataires à définir sur les demandes de tirage
commit-messageXXPréférences des messages de commit
enable-beta-ecosystemsXActiver les écosystèmes qui ont une prise en charge au niveau bêta
ignoreXXIgnorer certaines dépendances ou versions
insecure-external-code-executionXAutoriser ou refuser l’exécution du code dans les fichiers manifeste
labelsXXÉtiquettes à définir sur les demandes de tirage
milestoneXXJalon à définir sur les demandes de tirage
open-pull-requests-limitXXLimiter le nombre de demandes de tirage ouvertes pour les mises à jour de version
pull-request-branch-name.separatorXXChanger le séparateur des noms de branche de demande de tirage
rebase-strategyXXDésactiver le rebasage automatique
registriesXRegistres privés auxquels Dependabot peut accéder
reviewersXXRéviseurs à définir sur les demandes de tirage
schedule.dayXJour de la semaine auquel rechercher les mises à jour
schedule.timeXHeure de la journée à laquelle rechercher les mises à jour (hh:mm)
schedule.timezoneXFuseau horaire pour l’heure de la journée (identificateur de fuseau)
target-branchXBranche par rapport à laquelle créer les demandes de tirage
vendorXMettre à jour les dépendances placées dans le répertoire vendor ou mises en cache
versioning-strategyXXMode de mise à jour des exigences de la version du manifeste

La plupart de ces options entrent dans l’une des catégories suivantes.

En outre, l’option open-pull-requests-limit change le nombre maximal de demandes de tirage pour les mises à jour de version que Dependabot peut ouvrir.

Remarque : Certaines de ces options de configuration peuvent également affecter les demandes de tirage déclenchées pour les mises à jour de sécurité des manifestes de package vulnérables.

Les mises à jour de sécurité ne sont déclenchées pour les manifestes de package vulnérables que sur la branche par défaut. Quand des options de configuration sont définies pour la même branche (ce qui est le cas sauf si vous utilisez target-branch) et spécifient un package-ecosystem et un directory pour le manifeste vulnérable, les demandes de tirage pour les mises à jour de sécurité utilisent des options appropriées.

En général, les mises à jour de sécurité utilisent toutes les options de configuration qui affectent les demandes de tirage, par exemple, l’ajout de métadonnées ou la modification de leur comportement. Pour plus d’informations sur les mises à jour de sécurité, consultez « Configuration des mises à jour de sécurité Dependabot ».

package-ecosystem

Requis. Vous ajoutez un élément package-ecosystem pour chaque gestionnaire de package pour lequel vous souhaitez que Dependabot surveille l’existence de nouvelles versions. Le dépôt doit également contenir un fichier de verrouillage ou manifeste de dépendance pour chacun de ces gestionnaires de packages. Si vous souhaitez activer le placement dans le répertoire vendor pour un gestionnaire de package qui le prend en charge, les dépendances placées dans le répertoire vendor doivent se trouver dans le répertoire requis. Pour plus d’informations, consultez vendor ci-dessous.

Remarque : Les propriétaires d’entreprise peuvent télécharger la version la plus récente de l’action Dependabot pour obtenir la meilleure couverture de l’écosystème. Pour plus d’informations sur l’action et pour obtenir des instructions sur le téléchargement de la version la plus récente, consultez « Utilisation de la dernière version des actions groupées officielles ».

Pour chaque gestionnaire de package, le tableau suivant montre ce qui suit :

  • Valeur YAML à utiliser dans le fichier dependabot.yml
  • Versions prises en charge du gestionnaire de package
  • Indique si les dépendances des référentiels et registres privés GitHub sont pris en charge
  • Indique si les dépendances fournisseur sont prises en charge
Gestionnaire de packageValeur YAMLVersions prises en chargeRéférentiels privésRegistres privésVendoring
Bundlerbundlerv1, v2
Cargocargov1 (git uniquement)
Composercomposerv1, v2
Dockerdockerv1Non applicable
Hexmixv1
elm-packageelmv0.19
sous-module gitgitsubmoduleNon applicableNon applicable
GitHub Actionsgithub-actionsNon applicableNon applicable
Modules Gogomodv1
GradlegradleNon applicable
MavenmavenNon applicable
npmnpmv6, v7, v8
NuGetnuget<= 4.8
pippipv21.1.2
pipenvpip<= 2021-05-29
pip-compilepip6.1.0
poetrypipv1
bistrotpubv2
Terraformterraform>= 0.13, <= 1.3.xNon applicable
yarnnpmv1

Conseil : pour les gestionnaires de package tels que pipenv et poetry, vous devez utiliser la valeur YAML pip. Par exemple, si vous utilisez poetry pour gérer vos dépendances Python et que vous souhaitez que Dependabot surveille votre fichier manifeste de dépendance pour les nouvelles versions, utilisez package-ecosystem: "pip" dans votre fichier dependabot.yml.

Cargo

La prise en charge des registres privés s’applique aux registres git et n’inclut pas les registres cargo.

GitHub Actions

Dependabot prend uniquement en charge les mises à jour pour GitHub Actions avec la syntaxe du dépôt GitHub, comme actions/checkout@v3. Les URL Docker Hub et GitHub Packages Container registry ne sont actuellement pas prises en charge.

Gradle

Dependabot n’exécute pas Gradle, mais prend en charge les mises à jour vers les fichiers suivants :

  • build.gradle, build.gradle.kts (pour les projets Kotlin)
  • Les fichiers inclus via la déclaration apply qui ont dependencies dans le nom de fichier. Notez que apply ne prend pas en charge apply to, la récursivité ou les syntaxes avancées (par exemple, les noms de fichier apply avec mapOf Kotlin définis par propriété).

Maven

Dependabot n’exécute pas Maven, mais prend en charge les mises à jour des fichiers pom.xml.

Interface de ligne de commande NuGet

Dependabot n’exécute pas l’interface CLI NuGet, mais prend en charge la plupart des fonctionnalités jusqu’à la version 4.8.

bistrot

Dependabot n’effectue pas de mise à jour pour pub quand la version vers laquelle il tente d’opérer la mise à jour est ignorée, même si une version antérieure est disponible.

Exemple d’installation de base pour trois gestionnaires de package

# Basic set up for three package managers

version: 2
updates:

  # Maintain dependencies for GitHub Actions
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"

  # Maintain dependencies for npm
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"

  # Maintain dependencies for Composer
  - package-ecosystem: "composer"
    directory: "/"
    schedule:
      interval: "weekly"

directory

Requis. Vous devez définir l’emplacement des manifestes de package pour chaque gestionnaire de package (par exemple, package.json ou Gemfile). Vous définissez le répertoire par rapport à la racine du dépôt pour tous les écosystèmes, sauf GitHub Actions. Pour GitHub Actions, définissez le répertoire sur / pour rechercher les fichiers de workflow dans .github/workflows.

# Specify location of manifest files for each package manager

version: 2
updates:
  - package-ecosystem: "composer"
    # Files stored in repository root
    directory: "/"
    schedule:
      interval: "weekly"

  - package-ecosystem: "npm"
    # Files stored in `app` directory
    directory: "/app"
    schedule:
      interval: "weekly"

  - package-ecosystem: "github-actions"
    # Workflow files stored in the
    # default location of `.github/workflows`
    directory: "/"
    schedule:
      interval: "weekly"

schedule.interval

Requis. Vous devez définir la fréquence à laquelle rechercher de nouvelles versions pour chaque gestionnaire de package. Par défaut, Dependabot attribue de façon aléatoire une heure pour appliquer toutes les mises à jour dans le fichier de configuration. Pour définir une heure spécifique, vous pouvez utiliser schedule.time et schedule.timezone.

Types d’intervalleFréquence
dailyL’exécution a lieu tous les jours de la semaine, du lundi au vendredi.
weeklyL’exécution a lieu une fois par semaine. Par défaut, il s’agit du lundi. Pour modifier cela, utilisez schedule.day.
monthlyL’exécution a lieu une fois par mois. Elle se produit le premier jour du mois.
# Set update schedule for each package manager

version: 2
updates:

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      # Check for updates to GitHub Actions every weekday
      interval: "daily"

  - package-ecosystem: "composer"
    directory: "/"
    schedule:
      # Check for updates managed by Composer once a week
      interval: "weekly"

Remarque : schedule définit quand Dependabot tente une nouvelle mise à jour. Toutefois, ce n’est pas la seule fois que vous pouvez recevoir des demandes de tirage. Les mises à jour peuvent être déclenchées en fonction des modifications apportées à votre fichier dependabot.yml, des modifications apportées à vos fichiers manifestes après l’échec d’une mise à jour ou des Dependabot security updates. Pour plus d’informations, consultez « À propos des mises à jour de version Dependabot » et « À propos des mises à jour de sécurité Dependabot ».

allow

Par défaut, toutes les dépendances explicitement définies dans un manifeste sont tenues à jour par les mises à jour de version de Dependabot. De plus, les mises à jour de sécurité de Dependabot mettent également à jour les dépendances vulnérables qui sont définies dans les fichiers de verrouillage. Vous pouvez utiliser allow et ignore pour personnaliser les dépendances à conserver. Dependabot recherche toutes les dépendances autorisées, puis filtre toutes les dépendances ou versions ignorées. Dès lors, une dépendance mise en correspondance par allow et ignore est ignorée.

Utilisez l’option allow pour personnaliser les dépendances à mettre à jour. Cela s’applique aux mises à jour de version et de sécurité. Vous pouvez utiliser les options suivantes :

  • dependency-name : permet d’autoriser les mises à jour des dépendances dont le nom correspond à une chaîne donnée. Vous pouvez utiliser * pour indiquer zéro ou plusieurs caractères.

    • Pour les dépendances Java, le format de l’attribut dependency-name est : groupId:artifactId ; par exemple : org.kohsuke:github-api.
    • Pour les étiquettes d’image Docker, le format est le nom complet du dépôt ; par exemple, pour une étiquette d’image de <account ID>.dkr.ecr.us-west-2.amazonaws.com/base/foo/bar/ruby:3.1.0-focal-jemalloc, utilisez base/foo/bar/ruby.
  • dependency-type : permet d’autoriser les mises à jour pour les dépendances de types spécifiques.

    Types de dépendancesPris en charge par les gestionnaires de packagesAutoriser les mises à jour
    directTousToutes les dépendances définies explicitement.
    indirectbundler, pip, composer, cargoDépendances de dépendances directes (également appelées sous-dépendances ou dépendances temporaires).
    allTousToutes les dépendances définies explicitement. Pour bundler, pip, composer, cargo, également les dépendances des dépendances directes.
    productionbundler, composer, mix, maven, npm, pipUniquement les dépendances du groupe de dépendances de production.
    developmentbundler, composer, mix, maven, npm, pipUniquement les dépendances du groupe de dépendances de développement.
# Use `allow` to specify which dependencies to maintain

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    allow:
      # Allow updates for Lodash
      - dependency-name: "lodash"
      # Allow updates for React and any packages starting "react"
      - dependency-name: "react*"

  - package-ecosystem: "composer"
    directory: "/"
    schedule:
      interval: "weekly"
    allow:
      # Allow both direct and indirect updates for all packages
      - dependency-type: "all"

  - package-ecosystem: "pip"
    directory: "/"
    schedule:
      interval: "weekly"
    allow:
      # Allow only direct updates for
      # Django and any packages starting "django"
      - dependency-name: "django*"
        dependency-type: "direct"
      # Allow only production updates for Sphinx
      - dependency-name: "sphinx"
        dependency-type: "production"

assignees

Utilisez assignees pour spécifier des destinataires individuels pour toutes les demandes de tirage déclenchées pour un gestionnaire de package.

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.

# Specify assignees for pull requests

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # Add assignees
    assignees:
      - "octocat"

commit-message

Par défaut, Dependabot tente de détecter vos préférences de message de commit et d’utiliser des modèles similaires. Utilisez l’option commit-message pour spécifier explicitement vos préférences.

Options prises en charge

Remarque : Les options prefix et prefix-development sont limitées à 15 caractères.

  • prefix spécifie un préfixe pour tous les messages de commit. Lorsque vous spécifiez un préfixe pour les messages de commit, GitHub ajoute automatiquement un signe deux-points entre le préfixe défini et le message de commit, à condition que le préfixe défini se termine par une lettre, un nombre, une parenthèse fermante ou un crochet fermant. Cela signifie que, par exemple, si vous terminez le préfixe par un espace, aucun signe deux-points n’est ajouté entre le préfixe et le message de commit. L’extrait de code ci-dessous fournit des exemples des deux dans le même fichier de configuration.

  • prefix-development spécifie un préfixe distinct pour tous les messages de commit qui mettent à jour les dépendances du groupe de dépendances de développement. Quand vous spécifiez une valeur pour cette option, le prefix est utilisé uniquement pour les mises à jour des dépendances du groupe de dépendances production. Cela est pris en charge par : bundler, composer, mix, maven, npm et pip.

  • include: "scope" spécifie que tout préfixe est suivi d’une liste des dépendances mises à jour dans le commit.

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.

# 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"
      include: "scope"

Si vous utilisez la même configuration que dans l’exemple ci-dessus, le déplacement de la bibliothèque requests dans le groupe de dépendances de développement pip génère un message de validation :

pip dev: bump requests from 1.0.0 to 1.0.1

ignore

Par défaut, toutes les dépendances explicitement définies dans un manifeste sont tenues à jour par les mises à jour de version de Dependabot. De plus, les mises à jour de sécurité de Dependabot mettent également à jour les dépendances vulnérables qui sont définies dans les fichiers de verrouillage. Vous pouvez utiliser allow et ignore pour personnaliser les dépendances à conserver. Dependabot recherche toutes les dépendances autorisées, puis filtre toutes les dépendances ou versions ignorées. Dès lors, une dépendance mise en correspondance par allow et ignore est ignorée.

Vous pouvez ignorer les dépendances en les ajoutant à ignore ou en utilisant la commande @dependabot ignore sur une demande de tirage ouverte par Dependabot.

Création de conditions ignore à partir de @dependabot ignore

Les dépendances ignorées avec la commande @dependabot ignore sont stockées de manière centralisée pour chaque gestionnaire de package. Si vous commencez à ignorer les dépendances dans le fichier dependabot.yml, ces préférences existantes sont prises en compte en même temps que les dépendances ignore dans la configuration.

Vous pouvez vérifier si un dépôt a des préférences ignore stockées en y recherchant "@dependabot ignore" in:comments. Si vous souhaitez ne plus ignorer une dépendance ignorée de cette façon, rouvrez la demande de tirage.

Pour plus d’informations sur les commandes @dependabot ignore, consultez « Gestion des demandes de tirage (pull request) pour les mises à jour des dépendances ».

Spécification des dépendances et des versions à ignorer

Vous pouvez utiliser l’option ignore pour personnaliser les dépendances à mettre à jour. L’option ignore prend en charge les options suivantes :

  • dependency-name : permet d’ignorer les mises à jour des dépendances dont le nom correspond à une chaîne donnée. Vous pouvez utiliser * pour indiquer zéro ou plusieurs caractères. Pour les dépendances Java, le format de l’attribut dependency-name est : groupId:artifactId (par exemple : org.kohsuke:github-api). Pour empêcher Dependabot de mettre à jour automatiquement les définitions du type TypeScript à partir de DefinitelyTyped, utilisez @types/*.
  • versions : permet d’ignorer des versions ou des plages de versions spécifiques. Si vous souhaitez définir une plage, utilisez le modèle standard du gestionnaire de package. Par exemple, pour npm, utilisez ^1.0.0 ; pour Bundler, utilisez ~> 2.0 ; pour Docker, utilisez la syntaxe de version Ruby ; pour NuGet, utilisez 7.*.
  • update-types : permet d’ignorer les types de mises à jour, telles que les mises à jour major, minor ou patch SemVer sur les mises à jour de version (par exemple : version-update:semver-patch ignore les mises à jour correctives). Vous pouvez combiner cela avec dependency-name: "*" pour ignorer des update-types particuliers pour toutes les dépendances. version-update:semver-major, version-update:semver-minor et version-update:semver-patch sont les seules options prises en charge. Les mises à jour de sécurité ne sont pas affectées par ce paramètre.

Si les options versions et update-types sont utilisées ensemble, Dependabot ignore toute mise à jour dans l’un ou l’autre ensemble.

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.

# Use `ignore` to specify dependencies that should not be updated

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    ignore:
      - dependency-name: "express"
        # For Express, ignore all updates for version 4 and 5
        versions: ["4.x", "5.x"]
        # For Lodash, ignore all updates
      - dependency-name: "lodash"
        # For AWS SDK, ignore all patch updates
      - dependency-name: "aws-sdk"
        update-types: ["version-update:semver-patch"]

Remarque : Dependabot ne peut exécuter des mises à jour de version sur les fichiers manifeste ou de verrouillage que s’il peut accéder à toutes les dépendances dans le fichier, même si vous ajoutez des dépendances inaccessibles à l’option ignore de votre fichier de configuration. Pour plus d’informations, consultez « Gestion des paramètres de sécurité et d’analyse pour votre organisation » et « Résolution des erreurs Dependabot ».

Remarque : Pour l’écosystème pub, Dependabot n’effectue pas de mise à jour quand la version vers laquelle il tente d’opérer la mise à jour est ignorée, même si une version antérieure est disponible.

insecure-external-code-execution

Les gestionnaires de package avec les valeurs package-ecosystem bundler, mix et pip peuvent exécuter du code externe dans le manifeste dans le cadre du processus de mise à jour de version. Cela peut permettre à un package compromis de voler des informations d’identification ou d’accéder aux registres configurés. Quand vous ajoutez un paramètre registries dans une configuration updates, Dependabot empêche automatiquement l’exécution de code externe, ce qui peut entraîner l’échec de la mise à jour de version. Vous pouvez choisir de remplacer ce comportement et d’autoriser l’exécution de code externe pour les gestionnaires de packages bundler, mix et pip en définissant insecure-external-code-execution sur allow.

# Allow external code execution when updating dependencies from private registries

version: 2
registries:
  ruby-github:
    type: rubygems-server
    url: https://rubygems.pkg.github.com/octocat/github_api
    token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
updates:
  - package-ecosystem: "bundler"
    directory: "/rubygems-server"
    insecure-external-code-execution: allow
    registries: "*"
    schedule:
      interval: "monthly"

Si vous définissez un paramètre registries pour autoriser Dependabot à accéder à un registre de packages privé et que vous définissez insecure-external-code-execution avec la valeur allow dans la même configuration updates, l’exécution de code externe qui se produit n’a accès qu’aux gestionnaires de package dans les registres associés à ce paramètre updates. Aucun accès aux registres définis dans la configuration registries de niveau supérieur n’est autorisé.

Dans cet exemple, le fichier de configuration permet à Dependabot d’accéder au registre de packages privé ruby-github. Dans le même paramètre updates, insecure-external-code-execution est défini avec la valeur allow, ce qui signifie que le code exécuté par les dépendances accède uniquement au registre ruby-github, et non au registre dockerhub.

# Using `registries` in conjunction with `insecure-external-code-execution:allow`
# in the same `updates` setting

version: 2
registries:
  ruby-github:
    type: rubygems-server
    url: https://rubygems.pkg.github.com/octocat/github_api
    token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
  dockerhub:
    type: docker-registry
    url: registry.hub.docker.com
    username: octocat
    password: ${{secrets.DOCKERHUB_PASSWORD}}
updates:
  - package-ecosystem: "bundler"
    directory: "/rubygems-server"
    insecure-external-code-execution: allow
    registries:
      - ruby-github # only access to registries associated with this ecosystem/directory
    schedule:
      interval: "monthly"

Vous pouvez refuser explicitement l’exécution de code externe, qu’il existe ou non un paramètre registries pour cette configuration de mise à jour, en définissant insecure-external-code-execution avec la valeur deny.

labels

Par défaut, Dependabot déclenche toutes les demandes de tirage avec l’étiquette dependencies . Si plusieurs gestionnaires de package sont définis, Dependabot inclut une étiquette supplémentaire sur chaque demande de tirage. Cela indique le langage ou l’écosystème que la demande de tirage va mettre à jour, par exemple : java pour les mises à jour de Gradle, et submodules pour les mises à jour de sous-module Git. Dependabot crée automatiquement ces étiquettes par défaut si nécessaire dans votre dépôt.

Utilisez labels afin de remplacer les étiquettes par défaut et de spécifier d’autres étiquettes pour toutes les demandes de tirage déclenchées pour un gestionnaire de package. Si l’une de ces étiquettes n’est pas définie dans le dépôt, elle est ignorée. Pour désactiver toutes les étiquettes, y compris les étiquettes par défaut, utilisez labels: [ ].

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.

# Specify labels for pull requests

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # Specify labels for npm pull requests
    labels:
      - "npm"
      - "dependencies"

milestone

Utilisez milestone pour associer toutes les demandes de tirage déclenchées pour un gestionnaire de package à un jalon. Vous devez spécifier l’identificateur numérique du jalon et non son étiquette. Si vous affichez un jalon, la dernière partie de l’URL de la page, après milestone, est l’identificateur. Par exemple : https://github.com/<org>/<repo>/milestone/3.

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.

# Specify a milestone for pull requests

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # Associate pull requests with milestone "4"
    milestone: 4

open-pull-requests-limit

Par défaut, Dependabot ouvre un maximum de cinq demandes de tirage pour les mises à jour de version. Une fois qu’il y a cinq demandes de tirage (pull requests) ouvertes provenant de Dependabot, Dependabot n’ouvre aucune nouvelle demande tant que certaines de ces demandes ouvertes ne sont pas fusionnées ou fermées. Utilisez open-pull-requests-limit pour changer cette limite. Cela permet également de désactiver temporairement les mises à jour de version pour un gestionnaire de package.

Cette option n’a aucun impact sur les mises à jour de sécurité, qui ont une limite interne distincte de dix demandes de tirage ouvertes.

# Specify the number of open pull requests allowed

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # Disable version updates for npm dependencies
    open-pull-requests-limit: 0

  - package-ecosystem: "pip"
    directory: "/"
    schedule:
      interval: "weekly"
    # Allow up to 10 open pull requests for pip dependencies
    open-pull-requests-limit: 10

pull-request-branch-name.separator

Dependabot génère une branche pour chaque demande de tirage. Chaque nom de branche inclut dependabot ainsi que le gestionnaire de package et la dépendance qui sont mis à jour. Par défaut, ces parties sont séparées par un symbole /, par exemple : dependabot/npm_and_yarn/next_js/acorn-6.4.1.

Utilisez pull-request-branch-name.separator pour spécifier un séparateur différent. Ce peut être "-", _ ou /. Le symbole de trait d’union doit être placé entre guillemets, afin qu’il ne soit pas interprété comme démarrant une liste YAML vide.

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.

# Specify a different separator for branch names

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    pull-request-branch-name:
      # Separate sections of the branch name with a hyphen
      # for example, `dependabot-npm_and_yarn-next_js-acorn-6.4.1`
      separator: "-"

rebase-strategy

Par défaut, Dependabot rebase automatiquement les demandes de tirage ouvertes quand il détecte des modifications apportées à la demande de tirage. Utilisez rebase-strategy pour désactiver ce comportement.

Stratégies de rebasage disponibles

  • auto pour utiliser le comportement par défaut et rebaser les demandes de tirage ouvertes quand des modifications sont détectées.
  • disabled pour désactiver le rebasage automatique.

Lorsque rebase-strategy est défini sur auto, Dependabot tente de rebaser les demandes de tirage dans les cas suivants.

  • Lorsque vous utilisez les Dependabot version updates, pour toute demande de tirage Dependabot ouverte lors de l’exécution de votre planification.

  • Lorsque vous rouvrez une demande de tirage Dependabot fermée.

  • Lorsque vous changez la valeur de target-branch dans le fichier de configuration Dependabot. Pour plus d’informations sur ce champ, consultez « target-branch ».

  • Lorsque Dependabot détecte qu’une demande de tirage Dependabot est en conflit après une poussée récente vers la branche cible.

Remarque : Dependabot continue de rebaser une demande de tirage indéfiniment jusqu’à ce que la demande de tirage soit fermée, fusionnée ou que vous désactiviez les Dependabot updates.

Lorsque rebase-strategy est défini sur disabled, Dependabot arrête de rebaser les demandes de tirage.

Remarque : Ce comportement s’applique uniquement aux demandes de tirage qui entrent en conflit avec la branche cible. Dependabot continue de procéder au rebasage des demandes de tirage ouvertes avant la modification du paramètre rebase-strategy, ainsi que des demandes de tirage qui font partie d’une exécution planifiée.

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.

# Disable automatic rebasing

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # Disable rebasing for npm pull requests
    rebase-strategy: "disabled"

registries

Pour permettre à Dependabotd’accéder à un registre de packages privé lors de l’exécution d’une mise à jour de version, vous devez inclure un paramètre registries dans la configuration updates appropriée. Vous pouvez autoriser l’utilisation de tous les registres définis en définissant registries sur "*". Vous pouvez également lister les registres que la mise à jour peut utiliser. Pour ce faire, utilisez le nom du registre tel que défini dans la section registries de niveau supérieur du fichier dependabot.yml. Pour plus d’informations, consultez « Options de configuration pour les registres privés » plus bas.

Pour permettre à Dependabot d’utiliser les gestionnaires de packages bundler, mix et pip afin de mettre à jour les dépendances dans les registres privés, vous pouvez choisir d’autoriser l’exécution de code externe. Pour plus d’informations, consultez insecure-external-code-execution plus haut.

# Allow Dependabot to use one of the two defined private registries
# when updating dependency versions for this ecosystem

version: 2
registries:
  maven-github:
    type: maven-repository
    url: https://maven.pkg.github.com/octocat
    username: octocat
    password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
  npm-npmjs:
    type: npm-registry
    url: https://registry.npmjs.org
    username: octocat
    password: ${{secrets.MY_NPM_PASSWORD}}
updates:
  - package-ecosystem: "gitsubmodule"
    directory: "/"
    registries:
      - maven-github
    schedule:
      interval: "monthly"

reviewers

Utilisez reviewers pour spécifier des réviseurs individuels ou des équipes de réviseurs pour toutes les demandes de tirage déclenchées pour un gestionnaire de package. Vous devez utiliser le nom complet de l’équipe, y compris l’organisation, comme si vous mentionniez (@mentioning) l’équipe.

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.

# Specify reviewers for pull requests

version: 2
updates:
  - package-ecosystem: "pip"
    directory: "/"
    schedule:
      interval: "weekly"
    # Add reviewers
    reviewers:
      - "octocat"
      - "my-username"
      - "my-org/python-team"

schedule.day

Quand vous définissez une planification de mise à jour weekly, par défaut, Dependabot recherche les nouvelles versions le lundi à une heure définie aléatoire pour le dépôt. Utilisez schedule.day afin de spécifier un autre jour pour rechercher les mises à jour.

Valeurs prises en charge

  • monday
  • tuesday
  • wednesday
  • thursday
  • friday
  • saturday
  • sunday
# Specify the day for weekly checks

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
      # Check for npm updates on Sundays
      day: "sunday"

schedule.time

Par défaut, Dependabot recherche les nouvelles versions à une heure définie aléatoire pour le dépôt. Utilisez schedule.time afin de spécifier une autre heure de la journée pour rechercher les mises à jour (format : hh:mm).

# Set a time for checks
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
      # Check for npm updates at 9am UTC
      time: "09:00"

schedule.timezone

Par défaut, Dependabot recherche les nouvelles versions à une heure définie aléatoire pour le dépôt. Utilisez schedule.timezone pour spécifier un autre fuseau horaire. L’identificateur de fuseau horaire doit provenir de la base de données de fuseaux horaires gérée par iana. Pour plus d’informations, consultez Liste des fuseaux horaires de la base de données tz.

# Specify the timezone for checks

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
      time: "09:00"
      # Use Japan Standard Time (UTC +09:00)
      timezone: "Asia/Tokyo"

target-branch

Par défaut, Dependabot recherche les fichiers manifestes sur la branche par défaut et déclenche des demandes de tirage pour les mises à jour de version sur cette branche. Utilisez target-branch pour spécifier une branche différente pour les fichiers manifestes et pour les demandes de tirage. Quand vous utilisez cette option, les paramètres de ce gestionnaire de package n’affectent plus les demandes de tirage déclenchées pour les 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"

vendor

Utilisez l’option vendor pour indiquer à Dependabot de placer les dépendances dans le répertoire vendor lors de leur mise à jour. N’utilisez pas cette option si vous utilisez gomod, car Dependabot détecte automatiquement le placement dans le répertoire vendor pour cet outil.

# Configure version updates for both dependencies defined in manifests and vendored dependencies

version: 2
updates:
  - package-ecosystem: "bundler"
    # Raise pull requests to update vendored dependencies that are checked in to the repository
    vendor: true
    directory: "/"
    schedule:
      interval: "weekly"

Dependabot met uniquement à jour les dépendances placées dans le répertoire vendor situées dans des répertoires spécifiques au sein d’un dépôt.

Gestionnaire de packageChemin de fichier requis pour les dépendances placées dans le répertoire vendorPlus d’informations
bundlerLes dépendances doivent se trouver dans le répertoire vendor/cache.
Les autres chemins de fichier ne sont pas pris en charge.
Documentation bundle cache
gomodAucune exigence de chemin (les dépendances se trouvent généralement dans le répertoire vendor)Documentation go mod vendor

versioning-strategy

Quand Dependabot modifie un fichier manifeste pour mettre à jour une version, il utilise les stratégies globales suivantes :

  • Pour les applications, les exigences de version sont accrues, par exemple : npm, pip et Composer.
  • Pour les bibliothèques, la plage de versions est étendue, par exemple : Bundler et Cargo.

Utilisez l’option versioning-strategy afin de changer ce comportement pour les gestionnaires de packages pris en charge.

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.

Stratégies de mise à jour disponibles

OptionPris en charge parAction
lockfile-onlybundler, cargo, composer, mix, npm, pipCréer uniquement des demandes de tirage pour mettre à jour les fichiers de verrouillage. Ignorer toutes les nouvelles versions qui nécessitent des modifications du manifeste de package.
autobundler, cargo, composer, mix, npm, pipSuivre la stratégie par défaut décrite ci-dessus.
widencomposer, npmAssouplir l’exigence de version pour inclure à la fois la nouvelle et l’ancienne version, si possible.
increasebundler, composer, npmAccroître toujours l’exigence de version pour qu’elle corresponde à la nouvelle version.
increase-if-necessarybundler, composer, npmAccroître l’exigence de version uniquement quand la nouvelle version l’exige.
# Customize the manifest version strategy

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # Update the npm manifest file to relax
    # the version requirements
    versioning-strategy: widen

  - package-ecosystem: "composer"
    directory: "/"
    schedule:
      interval: "weekly"
    # Increase the version requirements for Composer
    # only when required
    versioning-strategy: increase-if-necessary

  - package-ecosystem: "pip"
    directory: "/"
    schedule:
      interval: "weekly"
    # Only allow updates to the lockfile for pip and
    # ignore any version updates that affect the manifest
    versioning-strategy: lockfile-only

Options de configuration pour les registres privés

La clé registries de niveau supérieur est facultative. Elle vous permet de spécifier les détails d’authentification que Dependabot peut utiliser pour accéder aux registres de packages privés.

Remarque : Les registres privés derrière les pare-feu sur les réseaux privés ne sont pas pris en charge.

La valeur de la clé registries est un tableau associatif, dont chaque élément se compose d’une clé qui identifie un registre particulier et d’une valeur qui est un tableau associatif spécifiant les paramètres requis pour accéder à ce registre. Dans le fichier dependabot.yml suivant, un registre identifié comme dockerhub est configuré dans la section registries, puis référencé dans la section updates.

# Minimal settings to update dependencies in one private registry

version: 2
registries:
  dockerhub: # Define access for a private registry
    type: docker-registry
    url: registry.hub.docker.com
    username: octocat
    password: ${{secrets.DOCKERHUB_PASSWORD}}
updates:
  - package-ecosystem: "docker"
    directory: "/docker-registry/dockerhub"
    registries:
      - dockerhub # Allow version updates for dependencies in this registry
    schedule:
      interval: "monthly"

Vous utilisez les options suivantes pour spécifier les paramètres d’accès. Les paramètres de registre doivent contenir un type et une url et généralement soit une combinaison d’un username et d’un password, soit un token.

Option                Description
typeIdentifie le type de registre. Consultez la liste complète des types ci-après.
urlURL à utiliser pour accéder aux dépendances dans ce registre. Le protocole est facultatif. S’il n’est pas renseigné, la valeur https:// est supposée. Dependabot ajoute ou ignore les barres obliques de fin selon les besoins.
usernameNom d’utilisateur utilisé par Dependabot pour accéder au registre.
passwordRéférence à un secret Dependabot contenant le mot de passe de l’utilisateur spécifié. Pour plus d’informations, consultez « Configuration de l’accès aux registres privés pour Dependabot ».
keyRéférence à un secret Dependabot contenant une clé d’accès pour le registre. Pour plus d’informations, consultez « Configuration de l’accès aux registres privés pour Dependabot ».
tokenRéférence à un secret Dependabot contenant un jeton d’accès pour le registre. Pour plus d’informations, consultez « Configuration de l’accès aux registres privés pour Dependabot ».
replaces-basePour les registres avec type: python-index, si la valeur booléenne est true, pip résout les dépendances en utilisant l’URL spécifiée plutôt que de l’URL de base de l’index de package Python (par défaut https://pypi.org/simple).

Vous devez fournir les paramètres obligatoires pour chaque configuration type que vous spécifiez. Certains types permettent plusieurs façons de se connecter. Les sections suivantes fournissent des détails sur les paramètres que vous devez utiliser pour chaque type.

composer-repository

Le type composer-repository prend en charge le nom d’utilisateur et le mot de passe.

registries:
  composer:
    type: composer-repository
    url: https://repo.packagist.com/example-company/
    username: octocat
    password: ${{secrets.MY_PACKAGIST_PASSWORD}}

docker-registry

Dependabot fonctionne avec tous les registres de conteneurs qui implémentent les spécifications du registre de conteneurs OCI. Pour plus d’informations, consultez https://github.com/opencontainers/distribution-spec/blob/main/spec.md. Dependabot prend en charge l’authentification auprès des registres privés via un service de jeton central ou l’authentification de base HTTP. Pour plus d’informations, consultez Spécification de l’authentification par jeton dans la documentation Docker et Authentification d’accès de base sur Wikipédia.

Le type docker-registry prend en charge le nom d’utilisateur et le mot de passe.

registries:
  dockerhub:
    type: docker-registry
    url: https://registry.hub.docker.com
    username: octocat
    password: ${{secrets.MY_DOCKERHUB_PASSWORD}}

Le type docker-registry peut également être utilisé pour effectuer un tirage à partir d’un registre ECR Amazon privé en utilisant des informations d’identification AWS statiques.

registries:
  ecr-docker:
    type: docker-registry
    url: https://1234567890.dkr.ecr.us-east-1.amazonaws.com
    username: ${{secrets.ECR_AWS_ACCESS_KEY_ID}}
    password: ${{secrets.ECR_AWS_SECRET_ACCESS_KEY}}

git

Le type git prend en charge le nom d’utilisateur et le mot de passe.

registries:
  github-octocat:
    type: git
    url: https://github.com
    username: x-access-token
    password: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}

hex-organization

Le type hex-organization prend en charge l’organisation et la clé.

registries:
  github-hex-org:
    type: hex-organization
    organization: github
    key: ${{secrets.MY_HEX_ORGANIZATION_KEY}}

maven-repository

Le type maven-repository prend en charge le nom d’utilisateur et le mot de passe.

registries:
  maven-artifactory:
    type: maven-repository
    url: https://artifactory.example.com
    username: octocat
    password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}

npm-registry

Le type npm-registry prend en charge le nom d’utilisateur et le mot de passe ou le jeton.

Quand vous utilisez le nom d’utilisateur et le mot de passe, votre jeton d’authentification de .npmrc peut contenir un _password codé base64 ; toutefois, le mot de passe référencé dans votre fichier config Dependabot doit être le mot de passe d’origine (non codé).

registries:
  npm-npmjs:
    type: npm-registry
    url: https://registry.npmjs.org
    username: octocat
    password: ${{secrets.MY_NPM_PASSWORD}}  # Must be an unencoded password
registries:
  npm-github:
    type: npm-registry
    url: https://npm.pkg.github.com
    token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}

nuget-feed

Le type nuget-feed prend en charge le nom d’utilisateur et le mot de passe ou le jeton.

registries:
  nuget-example:
    type: nuget-feed
    url: https://nuget.example.com/v3/index.json
    username: octocat@example.com
    password: ${{secrets.MY_NUGET_PASSWORD}}
registries:
  nuget-azure-devops:
    type: nuget-feed
    url: https://pkgs.dev.azure.com/.../_packaging/My_Feed/nuget/v3/index.json
    username: octocat@example.com
    password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}

python-index

Le type python-index prend en charge le nom d’utilisateur et le mot de passe ou le jeton.

registries:
  python-example:
    type: python-index
    url: https://example.com/_packaging/my-feed/pypi/example
    username: octocat
    password: ${{secrets.MY_BASIC_AUTH_PASSWORD}}
    replaces-base: true
registries:
  python-azure:
    type: python-index
    url: https://pkgs.dev.azure.com/octocat/_packaging/my-feed/pypi/example
    username: octocat@example.com
    password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
    replaces-base: true

rubygems-server

Le type rubygems-server prend en charge le nom d’utilisateur et le mot de passe ou le jeton.

registries:
  ruby-example:
    type: rubygems-server
    url: https://rubygems.example.com
    username: octocat@example.com
    password: ${{secrets.MY_RUBYGEMS_PASSWORD}}
registries:
  ruby-github:
    type: rubygems-server
    url: https://rubygems.pkg.github.com/octocat/github_api
    token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}

terraform-registry

Le type terraform-registry prend en charge un jeton.

registries:
  terraform-example:
    type: terraform-registry
    url: https://terraform.example.com
    token: ${{secrets.MY_TERRAFORM_API_TOKEN}}

Activation de la prise en charge des écosystèmes au niveau bêta

enable-beta-ecosystems

Par défaut, Dependabot met à jour les manifestes de dépendance et les fichiers de verrouillage uniquement pour les écosystèmes entièrement pris en charge. Utilisez l’indicateur enable-beta-ecosystems pour choisir les mises à jour des écosystèmes qui ne sont pas encore en disponibilité générale.

# Configure beta ecosystem

version: 2
enable-beta-ecosystems: true
updates:
  - package-ecosystem: "beta-ecosystem"
    directory: "/"
    schedule:
      interval: "weekly"