Vous pouvez utiliser GitHub Actions pour effectuer des tâches automatisées lorsque Dependabot crée des demandes de tirage (pull) pour mettre à jour les dépendances. Vous trouverez peut-être cette option utile si vous souhaitez :
-
Vérifier que les demandes de tirage (mises à jour de version et mises à jour de sécurité) Dependabot sont créées avec les données appropriées pour vos processus de travail, notamment les étiquettes, les noms et les réviseurs.
-
Déclencher des flux de travail pour envoyer des demandes de tirage (mises à jour de version et mises à jour de sécurité) Dependabot dans votre processus de révision ou pour fusionner automatiquement.
Note
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
Dependabot crée des demandes de tirage (pull) pour maintenir vos dépendances à jour. Vous pouvez utiliser GitHub Actions pour effectuer des tâches automatisées lorsque ces demandes de tirage sont créées. Par exemple, extraire des artefacts supplémentaires, ajouter des étiquettes, exécuter des tests ou modifier la demande de tirage.
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 quelques scénarios courants de demandes de tirage (pull) qui peuvent être automatisés à l’aide de GitHub Actions.
Extraire des métadonnées sur une demande de tirage
Pour la plupart des automatisations, il vous est nécessaire de connaître certaines informations sur le contenu de la demande de tirage : le nom de la dépendance, s’il s’agit ou non d’une dépendance de production et s’il s’agit d’une mise à jour principale, mineure ou corrective. Vous pouvez utiliser une action pour récupérer des informations sur les dépendances mises à jour par une demande de tirage générée par Dependabot.
Exemple :
name: Dependabot fetch metadata on: pull_request permissions: pull-requests: write issues: write repository-projects: 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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d 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
name: Dependabot fetch metadata
on: pull_request
permissions:
pull-requests: write
issues: write
repository-projects: 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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
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
.
Étiquetage d’une demande de tirage (pull request)
Si vous avez d’autres workflows d’automatisation ou de triage basés sur des étiquettes GitHub, vous pouvez configurer une action pour affecter des étiquettes en fonction des métadonnées fournies.
Exemple qui signale toutes les mises à jour des dépendances de production par une étiquette :
name: Dependabot auto-label on: pull_request permissions: pull-requests: write issues: write repository-projects: 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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d 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}}
name: Dependabot auto-label
on: pull_request
permissions:
pull-requests: write
issues: write
repository-projects: 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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
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 demande de tirage
Vous pouvez approuver automatiquement les demandes de tirage Dependabot, à l’aide de GitHub CLI dans un workflow.
Exemple :
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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d 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}}
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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
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 la fusion automatique sur une demande de tirage
Si vous souhaitez autoriser les responsables de la maintenance à marquer certaines demandes de tirage 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 demande de tirage » et « Gestion d’une règle de protection de branche ».
Vous pouvez plutôt utiliser GitHub Actions et l’GitHub CLI. Voici un exemple qui fusionne automatiquement toutes les mises à jour correctives dans my-dependency
:
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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d 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}}
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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
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}}
Note
Si vous utilisez des vérifications d’état pour tester les demandes de tirage, vous devez activer Exiger la réussite des vérifications d’état avant de fusionner pour la branche cible des demandes de tirage Dependabot. 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 ».
Enquête sur les échecs d’exécution de flux de travail
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 votrepull_request
. - Vos secrets sont disponibles dans des 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 l’écriture et le débogage de GitHub Actions, consultez Écriture de workflows.
Pour plus d’informations sur la résolution des problèmes liés aux flux de travail, consultez Résolution des problèmes de Dependabot sur GitHub Actions.