Toutes les recettes
Recette en 5 minutes

Les PR Dependabot, sur votre téléphone

Quand Dependabot ouvre une pull request, Zenhook vous envoie son titre, son dépôt et un bouton qui ouvre la PR. Aucune GitHub App et aucun droit d’écriture sur le dépôt.

Déclencheur

Nouvelle PR Dependabot

Destination

Un canal Zenhook

Action

Toucher « Voir la PR »

1. Créez un canal

Créez un canal nommé dependabot, puis copiez son URL webhook complète depuis les paramètres du canal.

2. Testez le canal

Remplacez le placeholder et exécutez cette commande une fois. L’alerte d’exemple doit arriver immédiatement sur votre téléphone.

bash
curl -X POST "VOTRE_URL_WEBHOOK_ZENHOOK" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Bump lodash from 4.17.20 to 4.17.21",
    "level": "info",
    "emoji": "package",
    "source": "Dependabot",
    "message": "Mise à jour proposée dans acme/api",
    "linkUrl": "https://github.com/acme/api/pull/42",
    "linkText": "Voir la PR"
  }'

3. Ajoutez un secret Dependabot

Dans GitHub, ouvrez Settings → Secrets and variables → Dependabot. Créez un secret de dépôt nommé ZENHOOK_WEBHOOK_URL et collez l’URL webhook complète du canal.

Utilisez un secret Dependabot, pas un secret Actions ordinaire. GitHub n’expose que les secrets Dependabot aux workflows lancés par Dependabot.

4. Copiez le workflow

Enregistrez ce fichier sous .github/workflows/zenhook-dependabot.yml sur votre branche par défaut.

yaml
name: Zenhook - Alertes Dependabot

on:
  pull_request:
    types: [opened, reopened]

permissions:
  contents: read

jobs:
  notify:
    if: github.event.pull_request.user.login == 'dependabot[bot]'
    runs-on: ubuntu-latest
    steps:
      - name: Envoyer la pull request à Zenhook
        env:
          ZENHOOK_WEBHOOK_URL: ${{ secrets.ZENHOOK_WEBHOOK_URL }}
          PR_TITLE: ${{ github.event.pull_request.title }}
          PR_URL: ${{ github.event.pull_request.html_url }}
          PR_NUMBER: ${{ github.event.pull_request.number }}
          REPOSITORY: ${{ github.repository }}
        run: |
          jq -n \
            --arg title "$PR_TITLE" \
            --arg url "$PR_URL" \
            --arg number "$PR_NUMBER" \
            --arg repository "$REPOSITORY" \
            '{
              title: $title,
              level: "info",
              emoji: "package",
              source: "Dependabot",
              message: ("Mise à jour proposée dans " + $repository),
              fields: [
                { label: "Dépôt", value: $repository },
                { label: "Pull request", value: ("#" + $number) }
              ],
              linkUrl: $url,
              linkText: "Voir la PR"
            }' | curl --fail-with-body --retry 2 \
              -X POST "$ZENHOOK_WEBHOOK_URL" \
              -H "Content-Type: application/json" \
              --data-binary @-

Le workflow ne récupère ni n’exécute le code de la pull request. Son token GitHub est en lecture seule ; il transmet uniquement les métadonnées déjà présentes dans l’événement vers votre URL Zenhook privée.

Un dépôt ou plusieurs ?

  • Un : ajoutez le secret et le workflow à ce dépôt.
  • Plusieurs : créez un secret Dependabot au niveau de l’organisation, autorisez uniquement les dépôts choisis, puis ajoutez le même workflow à chacun.

Cette recette envoie une alerte et un lien. Elle n’approuve pas et ne fusionne pas la PR. Consultez la documentation GitHub sur les workflows Dependabot et les secrets Dependabot.