Skip to main content

Cette version de GitHub Enterprise Server ne sera plus disponible le 2026-03-17. Aucune publication de correctifs n’est effectuée, même pour les problèmes de sécurité critiques. Pour de meilleures performances, une sécurité améliorée et de nouvelles fonctionnalités, effectuez une mise à niveau vers la dernière version de GitHub Enterprise. Pour obtenir de l’aide sur la mise à niveau, contactez le support GitHub Enterprise.

Optimisation de la création de requêtes de tirage pour les mises à jour de version Dependabot

Découvrez comment rationaliser et gérer efficacement vos demandes d’extraction Dependabot.

Qui peut utiliser cette fonctionnalité ?

Users with write access

Par défaut, Dependabot ouvre une nouvelle demande de tirage pour mettre à jour chaque dépendance. Lorsque vous activez les mises à jour de sécurité, de nouvelles demandes d’extraction sont ouvertes lorsqu’une dépendance vulnérable est détectée. Lorsque vous configurez les mises à jour de version pour un ou plusieurs écosystèmes, de nouvelles demandes d’extraction sont ouvertes lorsque de nouvelles versions des dépendances sont disponibles, à la fréquence définie dans le fichier dependabot.yml.

Si votre projet comporte de nombreuses dépendances, vous pourriez vous retrouver avec un nombre considérable de demandes d’extraction Dependabot à examiner et à fusionner, ce qui peut rapidement devenir difficile à gérer.

Il existe plusieurs options de personnalisation que vous pouvez mettre en œuvre pour optimiser les demandes de mise à jour Dependabot afin de les aligner sur vos processus, telles que :

  •           **Contrôler la fréquence** à laquelle Dependabot vérifie les nouvelles versions de vos dépendances avec `schedule`.
    
  •           **Priorité aux mises à jour significatives** avec `groups`.
    

Contrôle de la fréquence et du moment des mises à jour des dépendances

Dependabot effectue ses vérifications de mises à jour de version à une fréquence que vous définissez dans le fichier config, où le champ obligatoire schedule.interval doit être défini sur daily, weekly, monthly, quarterly, semiannually, yearly ou cron (consultez cronjob).

Par défaut, Dependabot équilibre sa charge de travail en attribuant un moment aléatoire pour vérifier et générer des demandes de tirage pour les mises à jour des dépendances.

Toutefois, afin de réduire les distractions ou de mieux organiser le temps et les ressources nécessaires à l’examen et au traitement des mises à jour de version, il pourrait être utile de modifier la fréquence et le calendrier. Par exemple, vous pourriez préférer que Dependabot effectue des vérifications hebdomadaires plutôt que quotidiennes pour les mises à jour, et à un moment qui garantit que les demandes d’extraction sont soulevées avant la session de triage de votre équipe.

Modification de la fréquence et des délais pour les mises à jour des dépendances

Vous pouvez utiliser schedule avec une combinaison d’options pour modifier la fréquence et les moments auxquels Dependabot vérifie les mises à jour de version.

Le fichier d’exemple dependabot.yml ci-dessous modifie la configuration npm afin de spécifier que Dependabot doit vérifier les mises à jour de version des dépendances npm tous les mardis à 02h00, heure normale du Japon (UTC +09:00).

YAML
# `dependabot.yml` file with
# customized schedule for version updates

version: 2
updates:
  # Keep npm dependencies up to date
  - package-ecosystem: "npm"
    directory: "/"
    # Check the npm registry every week on Tuesday at 02:00 Japan Standard Time (UTC +09:00)
    schedule:
      interval: "weekly"
      day: "tuesday"
      time: "02:00"
      timezone: "Asia/Tokyo"

Consultez également planification.

Priorité aux mises à jour significatives

Vous pouvez utiliser groups pour regrouper les mises à jour de plusieurs dépendances dans une seule demande de tirage. Cela vous permet de concentrer votre temps de révision sur les mises à jour à haut risque et de minimiser le temps consacré à la révision des mises à jour mineures. Par exemple, vous pouvez regrouper les mises à jour mineures ou les correctifs pour les dépendances de développement dans une seule pull request, et disposer d’un groupe dédié aux mises à jour de sécurité ou de version qui ont un impact sur un domaine clé de votre base de code.

Il est nécessaire de configurer des groupes par écosystème de packages individuel, puis vous pouvez créer plusieurs groupes par écosystème de packages en utilisant une combinaison de critères :

  • Type de mise à jour Dependabot : applies-to
  • Type de dépendance : dependency-type.
  • Nom de dépendance : patterns et exclude-patterns
  • Niveaux de version sémantique : update-types

Pour afficher toutes les valeurs prises en charge pour chaque critère, consultez groups.

Les exemples ci-dessous présentent plusieurs méthodes différentes pour créer des groupes de dépendances à l’aide des critères.

Exemple 1 : Trois groupes de mise à jour des versions

Dans cet exemple, ledependabot.yml fichier :

  • Créez trois groupes, appelés «production-dependencies», «development-dependencies» et «rubocop».
  • Utilisez patterns et dependency-type pour inclure des dépendances dans le groupe.
  • Utilisez exclude-patterns pour exclure une dépendance (ou plusieurs dépendances) du groupe.
version: 2
updates:
  # Keep bundler dependencies up to date
  - package-ecosystem: "bundler"
    directory: "/"
    schedule:
      interval: "weekly"
    groups:
      production-dependencies:
        dependency-type: "production"
      development-dependencies:
        dependency-type: "development"
        exclude-patterns:
          - "rubocop*"
      rubocop:
        patterns:
          - "rubocop*"

Par conséquent :

  • Les mises à jour de version sont regroupées par type de dépendance.
  • Les dépendances de développement correspondant au modèle rubocop* sont exclues du groupe development-dependencies .
  • Au lieu de cela, les dépendances de développement correspondant rubocop* seront incluses dans le groupe rubocop. En raison de la commande, la correspondance des dépendances de productionrubocop* sera incluse dans le groupe production-dependencies.
  • Qui plus est, tous les groupes s’appliquent par défaut aux mises à jour de version uniquement, car la clé applies-to est absente.

Exemple 2 : Mises à jour groupées avec dépendances exclues

Dans cet exemple, ledependabot.yml fichier :

  • Créez un groupe appelé « support-dependencies », dans le cadre d’une configuration Bundler personnalisée.
  • Utilisez patterns qui correspond au nom d’une dépendance (ou plusieurs dépendances) pour inclure des dépendances dans le groupe.
  • Utilisez exclude-patterns qui correspond au nom d’une dépendance (ou plusieurs dépendances) pour exclure les dépendances du groupe.
  • Appliquez le regroupement aux mises à jour de version uniquement, car applies-to: version-updates est utilisé.
version: 2
updates:
  # Keep bundler dependencies up to date
  - package-ecosystem: "bundler"
    directories:
      - "/frontend"
      - "/backend"
      - "/admin"

    schedule:
      interval: "weekly"
    # Create a group of dependencies to be updated together in one pull request
    groups:
      # Specify a name for the group, which will be used in pull request titles
      # and branch names
      support-dependencies:
        # Define patterns to include dependencies in the group (based on
        # dependency name)
        applies-to: version-updates # Applies the group rule to version updates
        patterns:
          - "rubocop" # A single dependency name
          - "rspec*"  # A wildcard string that matches multiple dependency names
          - "*"       # A wildcard that matches all dependencies in the package
                      # ecosystem. Note: using "*" may open a large pull request
        # Define patterns to exclude dependencies from the group (based on
        # dependency name)
        exclude-patterns:
          - "gc_ruboconfig"
          - "gocardless-*"

Par conséquent :

  • La majorité des dépendances pour bundler sont consolidées dans le groupe support-dependencies en raison du modèle générique (« * »), à part
  • Les dépendances qui correspondent gc_ruboconfig et gocardless-* sont exclues du groupe, et Dependabot continuent de déclencher des demandes de tirage uniques pour ces dépendances. Cela peut être utile si les mises à jour de ces dépendances doivent être examinées de manière plus approfondie.
  • Pour support-dependencies, Dependabot ne créera que des demandes de tirage pour les mises à jour de version.

Exemple 3 : Demandes de tirage individuelles pour les mises à jour majeures et regroupées pour les mises à jour mineures/correctives

Dans cet exemple, ledependabot.yml fichier :

  • Créez un groupe appelé  « angular ».
  • Utilisez patterns qui correspond au nom d’une dépendance pour inclure des dépendances dans le groupe.
  • Utilisez update-type pour inclure uniquement des mises à jour minor ou patch dans le groupe.
  • Appliquez le regroupement aux mises à jour de version uniquement, car applies-to: version-updates est utilisé.
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    groups:
      # Specify a name for the group, which will be used in pull request titles
      # and branch names
      angular:
        applies-to: version-updates
        patterns:
          - "@angular*"
        update-types:
          - "minor"
          - "patch"

Par conséquent :

  • Dependabot crée une demande de tirage groupée pour toutes les dépendances Angular qui ont une mise à jour mineure ou corrective.
  • Toutes les mises à jour majeures continueront d’être déclenchées en tant que demandes de tirage individuelles.

Exemple 4 : Demandes de tirage regroupées pour les mises à jour mineures/correctives et aucune demande de tirage pour les mises à jour majeures

Dans cet exemple, ledependabot.yml fichier :

  • Créez trois groupes, appelés «angular» et «minor-and-patch».
  • Utilisez applies-to afin que le premier groupe s’applique uniquement aux mises à jour de version, et le deuxième groupe s’applique uniquement aux mises à jour de sécurité.
  • Utilisez update-type pour inclure uniquement des mises à jour minor ou patch pour les deux groupes.
  • Utilisez une ignore condition pour exclure les mises à jour de major version des @angular* packages .
version: 2
updates:
  # Keep npm dependencies up to date
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    groups:
      angular:
        applies-to: version-updates
        patterns:
          - "@angular*"
        update-types:
          - "minor"
          - "patch"
      minor-and-patch:
        applies-to: security-updates
        patterns:
          - "@angular*"
        update-types:
          - "patch"
          - "minor"
    ignore:
      - dependency-name: "@angular*"
        update-types: ["version-update:semver-major"]

Par conséquent :

  • Les mises à jour mineures et correctives des versions pour les dépendances Angular sont regroupées en une seule demande de tirage.
  • Les mises à jour de sécurité mineures et correctives pour les dépendances Angular sont également regroupées en une seule demande de tirage.
  • Dependabot n’ouvre pas automatiquement les demandes de tirage pour les mises à jour majeures pour Angular.