Skip to main content

Contrôle des dépendances mises à jour par Dependabot

Vous pouvez configurer votre référentiel dependabot.yml de sorte que Dependabot mette automatiquement à jour les packages que vous spécifiez, de la manière que vous définissez.

Qui peut utiliser cette fonctionnalité ?

Users with write access

Vous pouvez personnaliser votre configuration Dependabot en fonction de vos besoins, en ajoutant des options à votre fichier dependabot.yml. Par exemple, vous pouvez vous assurer que Dependabot utilise les fichiers manifestes de package corrects et met à jour uniquement les dépendances que vous souhaitez conserver.

Cet article rassemble les options de personnalisation que vous pouvez trouver utiles.

Définition de plusieurs emplacements pour les fichiers manifestes

Si vous souhaitez activer Dependabot version updates pour les fichiers manifestes stockés dans plusieurs emplacements, vous pouvez utiliser directories à la place de directory. Par exemple, cette configuration définit deux planifications de mise à jour différentes pour les fichiers manifestes stockés dans des répertoires différents.

YAML
# Specify the locations of the manifest files to update for each package manager
# using both `directories` and `directory`

version: 2
updates:
  - package-ecosystem: "bundler"
    # Update manifest files stored in these directories weekly
    directories:
      - "/frontend"
      - "/backend"
      - "/admin"
    schedule:
      interval: "weekly"
  - package-ecosystem: "bundler"
    # Update manifest files stored in the root directory daily
    directory: "/"
    schedule:
      interval: "daily"
  • Pour spécifier une plage de répertoires à l’aide d’un modèle

    YAML
    # Specify the root directory and directories that start with "lib-",
    # using globbing, for locations of manifest files
    
    version: 2
    updates:
      - package-ecosystem: "composer"
        directories:
          - "/"
          - "/lib-*"
        schedule:
          interval: "weekly"
    
  • Pour spécifier des manifestes dans le répertoire actif et des sous-répertoires récursifs

    YAML
    # Specify all directories from the current layer and below recursively,
    # using globstar, for locations of manifest files
    
    version: 2
    updates:
      - package-ecosystem: "composer"
        directories:
          - "**/*"
        schedule:
          interval: "weekly"
    

Ignorer des dépendances spécifiques

Si vous n’êtes pas prêt à adopter des modifications de certaines dépendances dans votre projet, vous pouvez configurer Dependabot pour ignorer ces dépendances lorsque des demandes de tirage s’ouvrent pour les mises à jour de version et les mises à jour de sécurité. Pour ce faire, vous pouvez utiliser l’une des méthodes suivantes.

  • Configurez l’option ignore de dépendance dans votre fichier dependabot.yml. * Vous pouvez l’utiliser pour ignorer les mises à jour pour des dépendances, des versions et des types de mises à jour spécifiques.
  • Utilisez les commandes @dependabot ignore de commentaires sur une demande de tirage Dependabot pour les mises à jour de version et les mises à jour de sécurité. * Vous pouvez utiliser des commandes de commentaire pour ignorer les mises à jour des dépendances et versions spécifiques.

Voici quelques exemples montrant comment ignore peut être utilisé pour personnaliser les dépendances mises à jour.

  • Pour ignorer les mises à jour au-delà d’une version spécifique

    YAML
    ignore:
      - dependency-name: "lodash:*"
        # Ignore versions of Lodash that are equal to or greater than 1.0.0
        versions: [ ">=1.0.0" ]
    
    YAML
    ignore:
      - dependency-name: "sphinx"
        versions: [ "[1.1,)" ]
    
  • Pour ignorer les mises à jour correctives

    YAML
    ignore:
      - dependency-name: "@types/node"
        # Ignore patch updates for Node
        update-types: ["version-update:semver-patch"]
    
  • Pour ignorer des versions ou des plages de versions spécifiques, consultez Ignorer les versions ou plages de versions spécifiques.

Si vous souhaitez annuler l’action d’ignorer ou alors ignorer une condition, vous pouvez supprimer les conditions pour ignorer le fichier dependabot.yml ou rouvrir la demande de tirage.

Pour les demandes de tirage pour les mises à jour groupées, vous pouvez également utiliser @dependabot unignore commandes de commentaire. Les commandes @dependabot unignore de commentaire vous permettent d’effectuer les opérations suivantes en commentant une demande de tirage Dependabot :

  • Annuler l’action d’ignorer une condition d'ignorance spécifique
  • Annuler l’action d’ignorer une dépendance spécifique
  • Annuler l’action d’ignorer toutes les conditions d’ignorance pour toutes les dépendances dans une demande de tirage (pull request) Dependabot

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

Autoriser la mise à jour des dépendances spécifiques

Vous pouvez utiliser allow pour indiquer à Dependabot les dépendances que vous souhaitez conserver. allow est utilisé conjointement avec ignore.

Pour plus d’informations, consultez allow dans Référence des options Dependabot.

Par défaut, Dependabot crée des demandes de mise à jour de version uniquement pour les dépendances qui sont explicitement définies dans un manifeste (direct dépendances). Cette configuration utilise allow pour indiquer à Dependabot que nous voulons qu’elles conservent all types de dépendances. C’est-à-dire à la fois les dépendances direct et leurs dépendances (également appelées sous-dépendances ou dépendances temporaires). En outre, la configuration indique à Dependabot d’ignorer toutes les dépendances avec un nom correspondant au modèle org.xwiki.*, car nous avons un processus différent pour les maintenir.

Conseil

Dependabot recherche toutes les dépendances autorisées, puis filtre toutes les dépendances ou versions ignorées. Si une dépendance est mise en correspondance par une instruction autoriser et une instruction ignorer, elle est ignorée.

YAML
version: 2
registries:
  # Helps find updates for non Maven Central dependencies
  maven-xwiki-public:
    type: maven-repository
    url: https://nexus.xwiki.org/nexus/content/groups/public/
    username: ""
    password: ""
  # Required to resolve xwiki-common SNAPSHOT parent pom
  maven-xwiki-snapshots:
    type: maven-repository
    url: https://maven.xwiki.org/snapshots
    username: ""
    password: ""
updates:
  - package-ecosystem: "maven"
    directory: "/"
    registries:
      - maven-xwiki-public
      - maven-xwiki-snapshots
    schedule:
      interval: "weekly"
    allow:
      # Allow both direct and indirect updates for all packages.
      - dependency-type: "all"
    ignore:
      # Ignore XWiki dependencies. We have a separate process for updating them
      - dependency-name: "org.xwiki.*"
    open-pull-requests-limit: 15

Ignorer des versions ou des plages de versions spécifiques

Vous pouvez utiliser versions en conjonction avec ignore pour ignorer des versions spécifiques ou des plages de versions.

Pour plus d’informations, consultez versions dans Référence des options Dependabot.

  • Pour ignorer une version spécifique

    YAML
    ignore:
      - dependency-name: "django*"
        # Ignore version 11
        versions: [ "11" ]
    
  • Pour ignorer une plage de versions

    YAML
        ignore:
          - dependency-name: "@types/node"
            versions: ["15.x", "14.x", "13.x"]
          - dependency-name: "xdg-basedir"
            # 5.0.0 has breaking changes as they switch to named exports
            # and convert the module to ESM
            # We can't use it until we switch to ESM across the project
            versions: ["5.x"]
          - dependency-name: "limiter"
            # 2.0.0 has breaking changes
            # so we want to delay updating.
            versions: ["2.x"]
    

Spécifier le niveau de version sémantique à ignorer

Vous pouvez spécifier un ou plusieurs niveaux de contrôle de version sémantique (SemVer) à ignorer à l’aide de update-types.

Pour plus d’informations, consultez update-types dans Référence des options Dependabot.

Dans cet exemple, Dependabot ignore les versions des correctifs pour Node.

YAML
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
    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"
      - dependency-name: "@types/node"
        # For Node types, ignore any patch versions
        update-types: ["version-update:semver-patch"]

Définition d’une stratégie de gestion des versions

Par défaut, Dependabot tente d’augmenter la version minimale requise pour les dépendances qu’elle identifie en tant qu’applications et élargit les exigences de version autorisées pour inclure les nouvelles et les anciennes versions pour les dépendances qu’elle identifie en tant que bibliothèques.

Vous pouvez modifier cette stratégie par défaut. Pour plus d’informations, consultez versioning-strategy dans Référence des options Dependabot.

Dans cet exemple, Dependabot augmentera la version minimale requise pour qu’elle corresponde à la nouvelle version des applications et des bibliothèques.

YAML
version: 2
updates:
  - package-ecosystem: npm
    directory: "/"
    schedule:
      interval: daily
    # Increase the minimum version for all npm dependencies
    versioning-strategy: increase

Dans cet exemple, Dependabot augmentera la version minimale requise uniquement si la contrainte d’origine n’autorise pas la nouvelle version.

YAML
version: 2
updates:
- package-ecosystem: pip
  directory: "/"
  schedule:
    interval: daily
  open-pull-requests-limit: 20
  rebase-strategy: "disabled"
  # Increase the version requirements for pip
  # only when required
  versioning-strategy: increase-if-necessary

Mise à jour des dépendances fournisseur

Vous pouvez demander à Dependabot de mettre à jour les dépendances spécifiques au vendeur.

Dependabot gère automatiquement les dépendances fournisseur pour les modules Go, et vous pouvez configurer Bundler pour mettre également à jour les dépendances fournisseur.

Pour plus d’informations, consultez vendor dans Référence des options Dependabot.

Dans cet exemple, vendor est défini sur true pour Bundler, ce qui signifie que Dependabot conserve également les dépendances pour Bundler stockées dans le répertoire fournisseur/cache du référentiel.

YAML
version: 2
updates:
- package-ecosystem: bundler
  directory: "/"
  # Vendoring Bundler
  vendor: true
  schedule:
    interval: weekly
    day: saturday
  open-pull-requests-limit: 10