Skip to main content

Configuration de mises à jour de version Dependabot

Vous pouvez configurer votre référentiel de sorte que Dependabot mette automatiquement à jour les packages que vous utilisez.

Qui peut utiliser cette fonctionnalité ?

People with write permissions to a repository can enable or disable Dependabot version updates 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 ».

Vous ne pourrez peut-être pas activer ou désactiver les Dependabot updates si un propriétaire d’entreprise a défini une stratégie au niveau de l’entreprise. Pour plus d’informations, consultez « Application de stratégies de sécurité et d’analyse du code pour votre entreprise ».

À propos des mises à jour de version pour les dépendances

Vous activez les Dependabot version updates en vérifiant un fichier de configuration dependabot.yml dans le répertoire .github de votre référentiel. Dependabot déclenche ensuite des demandes de tirage (pull request) pour maintenir à jour les dépendances que vous configurez. Pour les dépendances de chaque gestionnaire de package que vous souhaitez mettre à jour, vous devez spécifier l’emplacement des fichiers manifeste de package et la fréquence à laquelle rechercher les mises à jour des dépendances listées dans ces fichiers. Pour plus d’informations sur l’activation des mises à jour de sécurité, consultez « Configuration des mises à jour de sécurité Dependabot ».

Lorsque vous activez les mises à jour de version pour la première fois, vous pouvez avoir de nombreuses dépendances obsolètes et certaines peuvent remonter à de nombreuses versions avant la dernière version. Dependabot recherche les dépendances obsolètes dès qu’il est activé. Vous pouvez voir de nouvelles demandes de tirage pour les mises à jour de version dans les minutes qui suivent l’ajout du fichier de configuration, en fonction du nombre de fichiers manifeste pour lesquels vous configurez les mises à jour. Dependabot exécute également une mise à jour sur les modifications suivantes apportées au fichier de configuration.

Pour que les demandes de tirage restent faciles à gérer et à réviser, Dependabot déclenche un maximum de cinq demandes de tirage pour commencer à mettre les dépendances à niveau vers la version la plus récente. Si vous fusionnez certaines de ces premières demandes de tirage avant la prochaine mise à jour planifiée, les demandes de tirage restantes seront ouvertes au cours de la prochaine mise à jour, jusqu’à ce maximum. Vous pouvez modifier le nombre maximal de demandes de tirage ouvertes en définissant l’option de configuration open-pull-requests-limit.

Pour réduire davantage le nombre de demandes de tirage que vous pouvez voir, vous pouvez utiliser l’option de configuration groups pour grouper des ensembles de dépendances (par écosystème de packages). Dependabot déclenche ensuite une demande de tirage unique pour mettre à jour le plus de dépendances possible dans le groupe vers les versions les plus récentes en même temps. Pour plus d’informations, consultez « Personnalisation des mises à jour des dépendances ».

Parfois, en raison d'une mauvaise configuration ou d'une version incompatible, vous pouvez voir qu'une Dependabot a échoué. Après 30 des exécutions infructueuses, sauteront les exécutions programmées suivantes jusqu'à ce que vous déclenchiez manuellement une vérification des mises à jour du graphe des éléments dépendants. Dependabot security updates va néanmoins toujours s’exécuter comme d’habitude.

Par défaut, seules les dépendances directes explicitement définies dans un manifeste sont tenues à jour par les Dependabot version updates. Vous pouvez choisir de recevoir des mises à jour pour les dépendances indirectes définies dans les fichiers de verrouillage. Pour plus d’informations, consultez « Options de configuration pour le fichier dependabot.yml ».

Lors de l’exécution de mises à jour de sécurité ou de version, certains écosystèmes doivent être capables de résoudre toutes les dépendances de leur source pour vérifier que les mises à jour ont réussi. Si vos fichiers manifeste ou de verrouillage contiennent des dépendances privées, Dependabot doit être capable d’accéder à l’emplacement auquel ces dépendances sont hébergées. Les propriétaires de l’organisation peuvent octroyer à Dependabot un accès aux dépôts privés contenant des dépendances pour un projet au sein de cette même organisation. Pour plus d’informations, consultez « Gestion des paramètres de sécurité et d'analyse pour votre organisation ». Vous pouvez configurer un accès aux registres privés dans le fichier de configuration dependabot.yml d’un dépôt. Pour plus d’informations, consultez « Options de configuration pour le fichier dependabot.yml ».En outre, Dependabot ne prend pas en charge les dépendances GitHub privées pour tous les gestionnaires de package. Pour plus d’informations, consultez « À propos des mises à jour de version Dependabot » et « Prise en charge GitHub des langages ».

Activation des Dependabot version updates

Vous activez Dependabot version updates en validant un fichier de configuration dependabot.yml dans votre référentiel.

  1. Créez un fichier de configuration dependabot.yml dans le répertoire .github de votre référentiel. Vous pouvez utiliser l'extrait de code ci-dessous comme point de départ. For information about the options you can use to customize how Dependabot maintains your repositories, see "Options de configuration pour le fichier dependabot.yml."

    YAML
    # To get started with Dependabot version updates, you'll need to specify which
    # package ecosystems to update and where the package manifests are located.
    
    version: 2
    updates:
    - package-ecosystem: "" # See documentation for possible values
      directory: "/" # Location of package manifests
      schedule:
        interval: "weekly"
    
  2. Ajoutez une version. Cette clé est obligatoire. Le fichier doit commencer par version: 2.

  3. Si vous avez des dépendances dans un registre privé, vous pouvez ajouter une section registries contenant les détails de l’authentification. Pour plus d'informations, consultez registries dans les « Options de configuration du fichier dependabot.yml ».

  4. Ajoutez une section updates, avec une entrée pour chaque gestionnaire de package à faire superviser par Dependabot. Cette clé 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.

  5. Pour chaque gestionnaire de package, utilisez :

    • package-ecosystem pour spécifier le gestionnaire de package. Pour plus d'informations sur les gestionnaires de package pris en charge, consultez package-ecosystem dans les « Options de configuration du fichier dependabot.yml ».

    • directory pour spécifier l’emplacement du manifeste ou d’autres fichiers de définition. Pour plus d'informations, consultez directory dans les « Options de configuration du fichier dependabot.yml ».

    • schedule.interval pour spécifier la fréquence à laquelle rechercher les nouvelles versions. Pour plus d'informations, consultez schedule.interval dans les « Options de configuration du fichier dependabot.yml ».

  6. Vérifiez le fichier de configuration dependabot.yml dans le répertoire .github du référentiel.

Exemple de fichier dependabot.yml

L’exemple de fichier dependabot.yml ci-dessous configure les mises à jour de version pour deux gestionnaires de package : npm et Docker. Quand ce fichier est archivé, Dependabot vérifie si les fichiers manifestes sur la branche par défaut contiennent des dépendances obsolètes. S’il trouve des dépendances obsolètes, il déclenche des demandes de tirage par rapport à la branche par défaut pour mettre à jour les dépendances.

# Basic `dependabot.yml` file with
# minimum configuration for two package managers

version: 2
updates:
  # Enable version updates for npm
  - package-ecosystem: "npm"
    # Look for `package.json` and `lock` files in the `root` directory
    directory: "/"
    # Check the npm registry for updates every day (weekdays)
    schedule:
      interval: "daily"

  # Enable version updates for Docker
  - package-ecosystem: "docker"
    # Look for a `Dockerfile` in the `root` directory
    directory: "/"
    # Check for updates once a week
    schedule:
      interval: "weekly"

Dans l’exemple ci-dessus, si les dépendances Docker étaient très obsolètes, vous pourriez commencer par une planification daily jusqu’à ce que les dépendances soient à jour, puis revenir à une planification hebdomadaire.

Activation des mises à jour de version sur les duplications (forks)

Si vous souhaitez activer les mises à jour de version sur les duplications, il existe une étape supplémentaire. Les mises à jour de version ne sont pas automatiquement activées sur les duplications quand un fichier de configuration dependabot.yml est présent. Cela garantit que les propriétaires de duplications n’activent pas involontairement les mises à jour de version quand ils tirent (pull) des modifications incluant un fichier de configuration dependabot.yml à partir du référentiel d’origine.

Sur une duplication, vous devez également activer explicitement Dependabot.

  1. Dans votre instance GitHub Enterprise Server, accédez à la page principale du dépôt.

  2. Sous le nom de votre dépôt, cliquez sur Paramètres. Si vous ne voyez pas l’onglet « Paramètres », sélectionnez le menu déroulant , puis cliquez sur Paramètres.

    Capture d’écran d’un en-tête de dépôt montrant les onglets. L’onglet « Paramètres » est mis en évidence avec un encadré orange foncé.

  3. Dans la section « Sécurité » de la barre latérale, cliquez sur Sécurité et analyse du code.

  4. Sous « Sécurité et analyse du code », à droite de « Dependabot version updates », cliquez sur Activer pour permettre à Dependabot de démarrer les mises à jour de version.

Vérification de l’état des mises à jour de version

Une fois que vous avez activé les mises à jour de version, l’onglet Dependabot dans le graphe de dépendances du dépôt est rempli. Cet onglet indique quels sont les gestionnaires de packages que Dependabot doit superviser et quand Dependabot a recherché les nouvelles versions pour la dernière fois.

Capture d’écran de la page Graphe des dépendances. Un onglet intitulé « Dependabot » est mis en évidence avec un encadré orange.

Pour plus d’informations, consultez « Liste des dépendances configurées pour les mises à jour de version ».

Désactivation des Dependabot version updates

Vous pouvez désactiver entièrement les mises à jour de version en supprimant le fichier dependabot.yml de votre référentiel. Plus généralement, vous souhaitez désactiver temporairement les mises à jour pour une ou plusieurs dépendances ou gestionnaires de packages.

  • Gestionnaires de packages : effectuez la désactivation en définissant open-pull-requests-limit: 0 ou en commentant l’élément package-ecosystem approprié dans le fichier de configuration.
  • Dépendances spécifiques : effectuez la désactivation en ajoutant des attributs ignore pour les packages ou les applications que vous souhaitez exclure des mises à jour.

Quand vous désactivez les dépendances, vous pouvez utiliser des caractères génériques pour désigner un ensemble de bibliothèques associées. Vous pouvez également spécifier les versions à exclure. Cela est particulièrement utile si vous devez bloquer les mises à jour d’une bibliothèque, en attente d’un travail permettant de prendre en charge un changement cassant de son API, mais que vous souhaitez obtenir des correctifs de sécurité pour la version que vous utilisez.

Exemple de désactivation des mises à jour de version pour certaines dépendances

L’exemple de fichier dependabot.yml ci-dessous inclut des exemples des différentes façons de désactiver les mises à jour de certaines dépendances, tout en permettant la poursuite des autres mises à jour.

# `dependabot.yml` file with updates
# disabled for Docker and limited for npm

version: 2
updates:
  # Configuration for Dockerfile
  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "weekly"
      # Disable all pull requests for Docker dependencies
    open-pull-requests-limit: 0

  # Configuration for npm
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    ignore:
      # Ignore updates to packages that start with 'aws'
      # Wildcards match zero or more arbitrary characters
      - dependency-name: "aws*"
      # Ignore some updates to the 'express' package
      - dependency-name: "express"
        # Ignore only new versions for 4.x and 5.x
        versions: ["4.x", "5.x"]
      # For all packages, ignore all patch updates
      - dependency-name: "*"
        update-types: ["version-update:semver-patch"]

Pour savoir si des préférences « ignore » sont appliquées, consultez « Options de configuration pour le fichier dependabot.yml ».