Alle Rezepte
5-Minuten-Rezept

Dependabot-PRs, auf deinem Handy

Wenn Dependabot einen Pull Request öffnet, sendet dir Zenhook den Titel, das Repository und einen Button, der den PR öffnet. Keine GitHub App und kein Schreibzugriff auf das Repository.

Auslöser

Neuer Dependabot-PR

Ziel

Ein Zenhook-Channel

Aktion

Tippe auf „PR ansehen“

1. Channel erstellen

Erstelle einen Channel namens dependabot und kopiere dann seine vollständige Webhook-URL aus den Channel-Einstellungen.

2. Channel testen

Ersetze den Platzhalter und führe das einmal aus. Der Beispiel-Alert sollte sofort auf deinem Handy ankommen.

bash
curl -X POST "YOUR_ZENHOOK_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Bump lodash from 4.17.20 to 4.17.21",
    "level": "info",
    "emoji": "package",
    "source": "Dependabot",
    "message": "Abhängigkeits-Update vorgeschlagen in acme/api",
    "linkUrl": "https://github.com/acme/api/pull/42",
    "linkText": "PR ansehen"
  }'

3. Ein Dependabot-Secret hinzufügen

Öffne in GitHub Settings → Secrets and variables → Dependabot. Erstelle ein Repository-Secret namens ZENHOOK_WEBHOOK_URL und füge die vollständige Webhook-URL des Channels ein.

Nutze ein Dependabot-Secret, kein normales Actions-Secret. GitHub gibt Dependabot-Secrets nur an Workflows weiter, die Dependabot gestartet hat.

4. Workflow kopieren

Speichere das als .github/workflows/zenhook-dependabot.yml auf deinem Standard-Branch.

yaml
name: Zenhook - Dependabot-Alerts

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: Pull Request an Zenhook senden
        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: ("Abhängigkeits-Update vorgeschlagen in " + $repository),
              fields: [
                { label: "Repository", value: $repository },
                { label: "Pull request", value: ("#" + $number) }
              ],
              linkUrl: $url,
              linkText: "PR ansehen"
            }' | curl --fail-with-body --retry 2 \
              -X POST "$ZENHOOK_WEBHOOK_URL" \
              -H "Content-Type: application/json" \
              --data-binary @-

Der Workflow checkt keinen Code aus dem Pull Request aus und führt ihn nicht aus. Sein GitHub-Token darf nur lesen; er sendet nur die PR-Metadaten, die schon im Ereignis stehen, an deine private Zenhook-URL.

Ein Repository oder mehrere?

  • Eines: Füge das Secret und den Workflow zu diesem Repository hinzu.
  • Mehrere: Erstelle ein Dependabot-Secret auf Organisationsebene, gib es nur für die ausgewählten Repositories frei und füge jedem dieselbe Workflow-Datei hinzu.

Dieses Rezept sendet einen Alert und einen Link. Es genehmigt und merged den PR nicht. Siehe die GitHub-Dokumentation zuDependabot-Workflows undDependabot-Secrets.