Skip to main content

Automatisation de Dependabot avec GitHub Actions

Exemples de la façon dont vous pouvez utiliser GitHub Actions pour automatiser les tâches courantes Dependabot associées.

Qui peut utiliser cette fonctionnalité ?

Utilisateurs avec accès en écriture

Vous pouvez utiliser GitHub Actions pour effectuer des tâches automatisées lorsque Dependabot crée des pull requests pour mettre à jour les dépendances. Vous trouverez peut-être cette option utile si vous souhaitez :

  • Assurez-vous que les Dependabot pull requests (mises à jour de version et mises à jour de sécurité) sont créées avec les bonnes informations pour vos flux de travail, notamment les étiquettes et les noms.

  • Déclenchez des flux de travail pour envoyer Dependabot des pull requests (mises à jour de version et mises à jour de sécurité) à votre processus de révision ou les fusionner automatiquement.

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.

Il se peut que vous ne puissiez pas activer ou désactiver Dependabot updates si le propriétaire de l'entreprise a défini une politique 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 de Dependabot et de GitHub Actions

Important

Si Dependabot est activé pour un référentiel, il s’exécutera toujours sur GitHub Actions, contournant à la fois les vérifications de stratégie Actions et la désactivation au niveau du référentiel ou de l’organisation. Cela garantit que les workflows de mises à jour de sécurité et de versions s’exécutent toujours lorsque Dependabot est activé.

Dependabot crée des pull requests pour maintenir vos dépendances à jour. Vous pouvez utiliser GitHub Actions pour effectuer des tâches automatisées lorsque ces pull requests sont créées. Par exemple, récupérer des artefacts supplémentaires, ajouter des étiquettes, exécuter des tests ou modifier la pull request d’une autre manière.

Dependabot est en mesure de déclencher des workflows GitHub Actions sur ses demandes de tirage requêtes et commentaires ; toutefois, certains événements sont traités différemment. Pour plus d’informations, consultez Résolution des problèmes de Dependabot sur GitHub Actions.

Voici plusieurs scénarios courants pour les pull requests pouvant être automatisés à l’aide de GitHub Actions.

Récupération des métadonnées d’une pull request

La plupart des automatisations nécessitent de connaître des informations sur le contenu de la pull request : quel est le nom de la dépendance, s’il s’agit d’une dépendance de production, et si la mise à jour est majeure, mineure ou corrective. Vous pouvez utiliser une action pour récupérer des informations sur les dépendances que la pull request générée par Dependabot met à jour.

Exemple :

YAML
# Ce workflow utilise des actions qui ne sont pas certifiées par GitHub.
# Elles sont fournies par un tiers et régies par
# des conditions d’utilisation du service, une politique de confidentialité et un support distincts.
# documentation en ligne.
name: Dependabot fetch metadata
on: pull_request

permissions:
  pull-requests: write
  issues: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      # The following properties are now available:
      #  - steps.metadata.outputs.dependency-names
      #  - steps.metadata.outputs.dependency-type
      #  - steps.metadata.outputs.update-type

Pour plus d'informations, consultez le dépôt dependabot/fetch-metadata.

Ajout d’étiquettes à une pull request

Si vous disposez d’autres flux de travail d’automatisation ou de triage basés sur GitHub des étiquettes, vous pouvez configurer une action pour affecter des étiquettes en fonction des métadonnées fournies.

Exemple qui marque toutes les mises à jour de dépendances de production avec une étiquette :

YAML
# Ce workflow utilise des actions qui ne sont pas certifiées par GitHub.
# Elles sont fournies par un tiers et régies par
# des conditions d’utilisation du service, une politique de confidentialité et un support distincts.
# documentation en ligne.
name: Dependabot auto-label
on: pull_request

permissions:
  pull-requests: write
  issues: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      - name: Add a label for all production dependencies
        if: steps.metadata.outputs.dependency-type == 'direct:production'
        run: gh pr edit "$PR_URL" --add-label "production"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}

Approbation automatique d’une pull request

Vous pouvez approuver automatiquement les Dependabot pull requests en utilisant GitHub CLI dans un workflow.

Exemple :

YAML
# Ce workflow utilise des actions qui ne sont pas certifiées par GitHub.
# Elles sont fournies par un tiers et régies par
# des conditions d’utilisation du service, une politique de confidentialité et un support distincts.
# documentation en ligne.
name: Dependabot auto-approve
on: pull_request

permissions:
  pull-requests: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      - name: Approve a PR
        run: gh pr review --approve "$PR_URL"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}
          GH_TOKEN: ${{secrets.GITHUB_TOKEN}}

Activation de l’automerge sur une pull request

Si vous souhaitez autoriser les mainteneurs à marquer certaines pull requests pour la fusion automatique, vous pouvez utiliser la fonctionnalité de fusion automatique de GitHub. Cela permet à la demande de tirage d’être fusionnée une fois que les tests et approbations requis par les règles de protection de branche sont réussis.

Pour plus d’informations, consultez « Fusion automatique d'une pull request » et « Gestion d’une règle de protection de branche ».

Vous pouvez à la place utiliser GitHub Actions et le GitHub CLI. Voici un exemple qui effectue un automerge de toutes les mises à jour correctives vers my-dependency :

YAML
# Ce workflow utilise des actions qui ne sont pas certifiées par GitHub.
# Elles sont fournies par un tiers et régies par
# des conditions d’utilisation du service, une politique de confidentialité et un support distincts.
# documentation en ligne.
name: Dependabot auto-merge
on: pull_request

permissions:
  contents: write
  pull-requests: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      - name: Enable auto-merge for Dependabot PRs
        if: contains(steps.metadata.outputs.dependency-names, 'my-dependency') && steps.metadata.outputs.update-type == 'version-update:semver-patch'
        run: gh pr merge --auto --merge "$PR_URL"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}
          GH_TOKEN: ${{secrets.GITHUB_TOKEN}}

Remarque

Si vous utilisez des vérifications d’état pour tester les pull requests, vous devez activer Exiger que les vérifications d’état réussissent avant la fusion pour la branche cible des Dependabot pull requests. Cette règle de protection de branche garantit que les demandes de tirage ne sont pas fusionnées tant que toutes les vérifications d’état requises ne sont pas réussies. Pour plus d’informations, consultez « Gestion d’une règle de protection de branche ».

Si la branche cible utilise une file d’attente de fusion, GITHUB_TOKEN intégré ne peut pas ajouter de pull requests à la file d’attente. Dans ce cas, vous devez authentifier le flux de travail avec un jeton personal access token ou GitHub App disposant de l’autorisation de fusionner, et l’utiliser à la place de GITHUB_TOKEN pour l’étape gh pr merge.

Dependabot et GitHub Actions politiques

Normalement, si un flux de travail peut s’exécuter dans un référentiel dépend des GitHub Actionsvérifications de stratégie et s’il GitHub Actions est activé au niveau de l’organisation ou du référentiel. Ces contrôles peuvent restreindre l’exécution des flux de travail, en particulier lorsque des actions externes sont bloquées ou GitHub Actions désactivées entièrement.

Toutefois, lorsque Dependabot est activé pour un dépôt, ses flux de travail s’exécuteront toujours sur GitHub Actions, contournant à la fois les vérifications des règles Actions et leur désactivation.

  • Dependabot Les flux de travail ne sont pas bloqués par la désactivation des actions ou les restrictions de stratégie d’entreprise.
  • Les actions référencées au sein de ces workflows sont également autorisées à s’exécuter, même si les actions externes sont interdites.

Analyse des échecs d’exécution de workflows

Si votre exécution de workflow échoue, vérifiez les éléments suivants :

  • Vous exécutez le workflow uniquement quand l’acteur approprié le déclenche.
  • Vous extrayez la ref correcte pour votre pull_request.
  • Vos secrets sont disponibles en tant que secrets Dependabot plutôt qu’en tant que secrets GitHub Actions.
  • Vous disposez d’un GITHUB_TOKEN avec les autorisations appropriées.

Pour plus d’informations sur la rédaction et le débogage GitHub Actions, consultez Écriture de workflows.

Pour plus de conseils afin de résoudre les problèmes liés aux workflows, consultez Résolution des problèmes de Dependabot sur GitHub Actions.