Remarque
Cet article explique comment automatiser les tâches liées à Dependabot à l’aide de GitHub Actions. Pour plus d’informations sur l’exécution Dependabot updates à l’aide GitHub Actions, consultez Dependabot sur GitHub Actions coureurs à la place.
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.
À 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 :
# 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
# 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 :
# 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}}
# 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 :
# 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}}
# 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 :
# 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}}
# 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.
Pour plus d’informations, consultez « Dependabot sur GitHub Actions coureurs ».
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
refcorrecte pour votrepull_request. - Vos secrets sont disponibles en tant que secrets Dependabot plutôt qu’en tant que secrets GitHub Actions.
- Vous disposez d’un
GITHUB_TOKENavec 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.